Etude de la marche chez l'enfant¶

people-walking-backward-cartoon.png

Présentation de l'étude¶

Ce rapport vise à analyser l’initiation de la marche chez des enfants âgés de 6 à 12 ans, en comparant les enfants neurotypiques et ceux atteints de troubles du spectre de l’autisme (TSA). L’initiation de la marche est une phase clé qui permet d’évaluer la coordination motrice et l’anticipation du mouvement à travers des paramètres biomécaniques mesurés par une plateforme de force et un système d’analyse du mouvement.

L’étude repose sur un ensemble de données recueillies auprès de 30 enfants, mettant en avant les déplacements du centre de pression (CoP) dans différentes directions ainsi que la durée des phases de chargement et de déchargement. L’objectif est d’examiner l’influence de l’âge sur ces paramètres et de déterminer les méthodes les plus adaptées pour leur interprétation.

Dans ce contexte, plusieurs analyses seront menées :

  • Choix des différentes méthodes pour retenir l’essai le plus pertinents.
  • Vérification de la qualité des données et correction des anomalies.
  • Analyse de l’effet de l’âge sur l’anticipation du mouvement en comparant des groupes d’âge définis et en testant d’autres approches statistiques.
  • Évaluation de l’impact de l’âge sur des paramètres anthropométriques tels que la taille et le poids, afin d’isoler leur influence potentielle sur les résultats.

Les choix méthodologiques et les analyses statistiques seront justifiés en s’appuyant sur la littérature scientifique et les meilleures pratiques en matière de traitement des données biomécaniques.

2. Données descriptives¶

2.1 Méthodes de sélection de l’essai le plus représentatif¶

Pour choisir l’essai le plus pertinent, plusieurs méthodes sont utilisées. La moyenne est simple et représente la tendance centrale, mais elle est sensible aux valeurs extrêmes. La médiane est plus robuste face aux outliers, bien qu’elle ignore la variabilité. Une autre approche consiste à sélectionner l’essai le plus proche de la moyenne ou de la médiane, garantissant une performance typique. Enfin, certaines études privilégient l’essai le plus stable ou le plus performant, selon l’objectif recherché.

2.2 Nettoyage des données¶

In [ ]:
import pandas as pd

# Importer les données
TD_Res = pd.read_excel("/content/RES_all_cleaned.xlsx")

# Afficher les données
TD_Res.head()
Out[ ]:
GROUPE Sujet Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long ... Total_Affect social Score CRR Score total ADOS SCORE COMPARAISON Manque de réciprocité socio-émotionnelle Communication.1 Comportements répétitifs et patterns stéréotypés Anomalies dvp avt 36m SIM MAT
0 TD TD1 10.90 2 517 475 992 366 151 0.032708 ... NaN NaN NaN NaN NaN NaN NaN NaN 14.0 7.0
1 TD TD2 9.20 1 465 389 854 245 220 0.069070 ... NaN NaN NaN NaN NaN NaN NaN NaN 11.0 8.0
2 TD TD3 10.10 2 545 541 1086 215 330 0.034305 ... NaN NaN NaN NaN NaN NaN NaN NaN 12.0 8.0
3 TD TD4 10.05 1 471 201 672 273 198 0.014398 ... NaN NaN NaN NaN NaN NaN NaN NaN 11.0 8.0
4 TD TD5 6.10 1 444 201 645 226 218 0.051200 ... NaN NaN NaN NaN NaN NaN NaN NaN 5.0 9.0

5 rows × 82 columns

In [ ]:
# Afficher un résumé des données
print(TD_Res.info())  # Donne des infos sur les types de données et les valeurs manquantes
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 82 columns):
 #   Column                                            Non-Null Count  Dtype  
---  ------                                            --------------  -----  
 0   GROUPE                                            30 non-null     object 
 1   Sujet                                             30 non-null     object 
 2   Age                                               30 non-null     float64
 3   Sexe                                              30 non-null     int64  
 4   TAju.ms                                           30 non-null     int64  
 5   TExe.ms                                           30 non-null     int64  
 6   TPas.ms                                           30 non-null     int64  
 7   TLoad.ms                                          30 non-null     int64  
 8   TUnload.ms                                        30 non-null     int64  
 9   CoP_tot_AP.Long                                   30 non-null     float64
 10  CoP_tot_ML.Larg                                   30 non-null     float64
 11  CoP_loadAP.Long                                   30 non-null     float64
 12  CoP_load_ML.Larg                                  30 non-null     float64
 13  CoP_unload_ML.Larg                                30 non-null     float64
 14  Vpic_load_AP.ms                                   30 non-null     float64
 15  Vpic_load_ML.ms                                   30 non-null     float64
 16  Vpic_unload_ML.ms                                 30 non-null     float64
 17  BOS_AP_Init.m                                     30 non-null     float64
 18  BOS_ML_Init.m                                     30 non-null     float64
 19  MOS_AP_FOcr.Long                                  29 non-null     float64
 20  MOS_ML_FOcr.Larg                                  30 non-null     float64
 21   AGE_AB                                           30 non-null     float64
 22  Group AGE                                         30 non-null     object 
 23  CLASSE                                            30 non-null     object 
 24  Weight                                            30 non-null     float64
 25  Height                                            30 non-null     float64
 26  Epaule                                            30 non-null     int64  
 27  Coude                                             30 non-null     int64  
 28  Poignet                                           30 non-null     int64  
 29  Main                                              30 non-null     int64  
 30  MID                                               30 non-null     float64
 31  MIG                                               30 non-null     float64
 32  Fctelle                                           29 non-null     float64
 33  MANUALITE                                         29 non-null     float64
 34  QTAC                                              29 non-null     float64
 35  TAC                                               29 non-null     float64
 36  Inattention                                       29 non-null     float64
 37  Hyperactivité                                     29 non-null     float64
 38  Pb apprentissage                                  29 non-null     float64
 39  Pb fct exécutif                                   29 non-null     float64
 40  Agressivité                                       29 non-null     float64
 41  Pb sociaux                                        29 non-null     float64
 42  Index global Conners 3 Total                      29 non-null     float64
 43  DSM-IV-TR Inattention                             29 non-null     float64
 44  DSM-IV-TR Impulsivité-Hyperactivité               29 non-null     float64
 45  DSM-IV-TR Trouble des conduites                   29 non-null     float64
 46  DSM-IV-TR Trble oppositionprovocation             29 non-null     float64
 47  Anxiete                                           27 non-null     float64
 48  Depression                                        27 non-null     float64
 49  Inhibition                                        29 non-null     float64
 50  Flexibilité                                       29 non-null     float64
 51  Contrôle émotionnel                               29 non-null     float64
 52  Indice Régulation Comportementale .IRC            29 non-null     float64
 53  Initiation                                        29 non-null     float64
 54  MDT                                               29 non-null     float64
 55  Planification  Organisation                       29 non-null     float64
 56  Organisation matérielle                           29 non-null     float64
 57  Contrôle                                          29 non-null     float64
 58  Indice de méatacognition .IMC                     29 non-null     float64
 59  CEG = IRC+IMC                                     29 non-null     float64
 60  Négativité                                        29 non-null     float64
 61  Incohérence                                       29 non-null     float64
 62  AWR                                               3 non-null      float64
 63  COG                                               3 non-null      float64
 64  COM                                               3 non-null      float64
 65  MOT                                               3 non-null      float64
 66  RRB                                               3 non-null      float64
 67  SCI                                               3 non-null      float64
 68  TOT                                               3 non-null      float64
 69  Module ADOS                                       0 non-null      float64
 70  Communication                                     0 non-null      float64
 71  Inter Sociale Reciproque                          0 non-null      float64
 72  Total_Affect social                               0 non-null      float64
 73  Score CRR                                         0 non-null      float64
 74  Score total                                       0 non-null      float64
 75  ADOS SCORE COMPARAISON                            0 non-null      float64
 76  Manque de réciprocité socio-émotionnelle          0 non-null      float64
 77  Communication.1                                   0 non-null      float64
 78  Comportements répétitifs et patterns stéréotypés  0 non-null      float64
 79  Anomalies dvp avt 36m                             0 non-null      float64
 80  SIM                                               29 non-null     float64
 81  MAT                                               29 non-null     float64
dtypes: float64(68), int64(10), object(4)
memory usage: 19.3+ KB
None
In [ ]:
TD_Res.describe()
Out[ ]:
Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long CoP_tot_ML.Larg CoP_loadAP.Long ... Total_Affect social Score CRR Score total ADOS SCORE COMPARAISON Manque de réciprocité socio-émotionnelle Communication.1 Comportements répétitifs et patterns stéréotypés Anomalies dvp avt 36m SIM MAT
count 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 29.000000 29.000000
mean 8.609333 1.566667 502.866667 288.200000 791.066667 289.200000 202.466667 0.041073 0.113465 0.195808 ... NaN NaN NaN NaN NaN NaN NaN NaN 12.482759 12.241379
std 1.714623 0.504007 97.402731 109.350875 148.198360 80.546581 104.676425 0.013806 0.021794 0.079954 ... NaN NaN NaN NaN NaN NaN NaN NaN 2.414549 2.798663
min 6.000000 1.000000 273.000000 201.000000 474.000000 137.000000 -168.000000 0.014398 0.073276 -0.005183 ... NaN NaN NaN NaN NaN NaN NaN NaN 5.000000 7.000000
25% 7.137500 1.000000 455.000000 201.000000 673.750000 235.250000 148.750000 0.032430 0.098253 0.120784 ... NaN NaN NaN NaN NaN NaN NaN NaN 12.000000 10.000000
50% 8.350000 2.000000 507.500000 216.500000 752.000000 281.000000 203.000000 0.037639 0.111075 0.224284 ... NaN NaN NaN NaN NaN NaN NaN NaN 13.000000 12.000000
75% 10.177500 2.000000 543.250000 392.750000 889.250000 323.750000 262.250000 0.048384 0.130610 0.260647 ... NaN NaN NaN NaN NaN NaN NaN NaN 14.000000 14.000000
max 11.080000 2.000000 827.000000 541.000000 1086.000000 475.000000 363.000000 0.073069 0.156527 0.304639 ... NaN NaN NaN NaN NaN NaN NaN NaN 16.000000 19.000000

8 rows × 78 columns

On note 82 variables de type entier, décimal et objet étudié pour 30 enfants

D'après l'analyse initiale, voici les principales caractéristiques de notre échantillon :

Population étudiée :

30 enfants au total Âge : de 6 à 11,1 ans (moyenne de 8,6 ans) Répartition par sexe : 13 garçons (1) et 17 filles (2) Tous les enfants sont dans le groupe TD (Développement Typique)

In [ ]:
print(TD_Res.describe(include='all'))  # Statistiques descriptives pour toutes les colonnes
       GROUPE Sujet        Age       Sexe     TAju.ms     TExe.ms  \
count      30    30  30.000000  30.000000   30.000000   30.000000   
unique      1    30        NaN        NaN         NaN         NaN   
top        TD   TD1        NaN        NaN         NaN         NaN   
freq       30     1        NaN        NaN         NaN         NaN   
mean      NaN   NaN   8.609333   1.566667  502.866667  288.200000   
std       NaN   NaN   1.714623   0.504007   97.402731  109.350875   
min       NaN   NaN   6.000000   1.000000  273.000000  201.000000   
25%       NaN   NaN   7.137500   1.000000  455.000000  201.000000   
50%       NaN   NaN   8.350000   2.000000  507.500000  216.500000   
75%       NaN   NaN  10.177500   2.000000  543.250000  392.750000   
max       NaN   NaN  11.080000   2.000000  827.000000  541.000000   

            TPas.ms    TLoad.ms  TUnload.ms  CoP_tot_AP.Long  ...  \
count     30.000000   30.000000   30.000000        30.000000  ...   
unique          NaN         NaN         NaN              NaN  ...   
top             NaN         NaN         NaN              NaN  ...   
freq            NaN         NaN         NaN              NaN  ...   
mean     791.066667  289.200000  202.466667         0.041073  ...   
std      148.198360   80.546581  104.676425         0.013806  ...   
min      474.000000  137.000000 -168.000000         0.014398  ...   
25%      673.750000  235.250000  148.750000         0.032430  ...   
50%      752.000000  281.000000  203.000000         0.037639  ...   
75%      889.250000  323.750000  262.250000         0.048384  ...   
max     1086.000000  475.000000  363.000000         0.073069  ...   

        Total_Affect social  Score CRR  Score total  ADOS SCORE COMPARAISON  \
count                   0.0        0.0          0.0                     0.0   
unique                  NaN        NaN          NaN                     NaN   
top                     NaN        NaN          NaN                     NaN   
freq                    NaN        NaN          NaN                     NaN   
mean                    NaN        NaN          NaN                     NaN   
std                     NaN        NaN          NaN                     NaN   
min                     NaN        NaN          NaN                     NaN   
25%                     NaN        NaN          NaN                     NaN   
50%                     NaN        NaN          NaN                     NaN   
75%                     NaN        NaN          NaN                     NaN   
max                     NaN        NaN          NaN                     NaN   

        Manque de réciprocité socio-émotionnelle  Communication.1  \
count                                        0.0              0.0   
unique                                       NaN              NaN   
top                                          NaN              NaN   
freq                                         NaN              NaN   
mean                                         NaN              NaN   
std                                          NaN              NaN   
min                                          NaN              NaN   
25%                                          NaN              NaN   
50%                                          NaN              NaN   
75%                                          NaN              NaN   
max                                          NaN              NaN   

        Comportements répétitifs et patterns stéréotypés  \
count                                                0.0   
unique                                               NaN   
top                                                  NaN   
freq                                                 NaN   
mean                                                 NaN   
std                                                  NaN   
min                                                  NaN   
25%                                                  NaN   
50%                                                  NaN   
75%                                                  NaN   
max                                                  NaN   

        Anomalies dvp avt 36m        SIM        MAT  
count                     0.0  29.000000  29.000000  
unique                    NaN        NaN        NaN  
top                       NaN        NaN        NaN  
freq                      NaN        NaN        NaN  
mean                      NaN  12.482759  12.241379  
std                       NaN   2.414549   2.798663  
min                       NaN   5.000000   7.000000  
25%                       NaN  12.000000  10.000000  
50%                       NaN  13.000000  12.000000  
75%                       NaN  14.000000  14.000000  
max                       NaN  16.000000  19.000000  

[11 rows x 82 columns]

Détection des anomalies¶

On constate qu'il y a plusieurs variables manquantes. Procédons donc à la détection d'anomalies et leurs corrections. De plus, on a constaté que le nom des variables avec des parenthèse peut poser problème, donc a remplacé les parenthèses par des points. De même pour les variables "weight", "MIG" & "MID" certaines valeurs sont avec des points d'autres avec des virgules, R a considérer ces variables comme qualitatif alors qu'elles ne le sont pas. Pour résoudre ce problème on a uniformiser les valeurs en mettant des virgules pour tous les nombres décimales.

In [ ]:
# Calcul du nombre de valeurs manquantes par colonne
missing_values = TD_Res.isnull().sum()

# Création d'un DataFrame pour une meilleure lisibilité
missing_values_df = pd.DataFrame({'Variable': missing_values.index, 'Valeurs Manquantes': missing_values.values})

# Filtrer pour ne garder que les colonnes ayant au moins une valeur manquante
missing_values_df = missing_values_df[missing_values_df['Valeurs Manquantes'] > 0]

# Trier par ordre décroissant des valeurs manquantes
missing_values_df = missing_values_df.sort_values(by='Valeurs Manquantes', ascending=False)

# Affichage
missing_values_df
Out[ ]:
Variable Valeurs Manquantes
69 Module ADOS 30
75 ADOS SCORE COMPARAISON 30
70 Communication 30
72 Total_Affect social 30
73 Score CRR 30
74 Score total 30
71 Inter Sociale Reciproque 30
76 Manque de réciprocité socio-émotionnelle 30
77 Communication.1 30
78 Comportements répétitifs et patterns stéréotypés 30
79 Anomalies dvp avt 36m 30
62 AWR 27
68 TOT 27
67 SCI 27
66 RRB 27
65 MOT 27
64 COM 27
63 COG 27
47 Anxiete 3
48 Depression 3
60 Négativité 1
61 Incohérence 1
19 MOS_AP_FOcr.Long 1
58 Indice de méatacognition .IMC 1
80 SIM 1
59 CEG = IRC+IMC 1
56 Organisation matérielle 1
57 Contrôle 1
32 Fctelle 1
33 MANUALITE 1
34 QTAC 1
35 TAC 1
36 Inattention 1
37 Hyperactivité 1
38 Pb apprentissage 1
39 Pb fct exécutif 1
40 Agressivité 1
41 Pb sociaux 1
42 Index global Conners 3 Total 1
43 DSM-IV-TR Inattention 1
44 DSM-IV-TR Impulsivité-Hyperactivité 1
45 DSM-IV-TR Trouble des conduites 1
46 DSM-IV-TR Trble oppositionprovocation 1
49 Inhibition 1
50 Flexibilité 1
51 Contrôle émotionnel 1
52 Indice Régulation Comportementale .IRC 1
53 Initiation 1
54 MDT 1
55 Planification Organisation 1
81 MAT 1
In [ ]:
# Créez un dictionnaire pour stocker les résultats
resultats = {}

# Liste des nombres de valeurs manquantes à rechercher
nombres_manquants = [30, 27, 3, 1]

# Parcourez la liste des nombres manquants
for nombre in nombres_manquants:
  # Comptez le nombre de variables ayant ce nombre de valeurs manquantes
  nombre_variables = (missing_values_df['Valeurs Manquantes'] == nombre).sum()
  # Stockez le résultat dans le dictionnaire
  resultats[nombre] = nombre_variables

# Affichez les résultats
for nombre, nombre_variables in resultats.items():
  print(f"Nombre de variables avec {nombre} valeurs manquantes : {nombre_variables}")
Nombre de variables avec 30 valeurs manquantes : 11
Nombre de variables avec 27 valeurs manquantes : 7
Nombre de variables avec 3 valeurs manquantes : 2
Nombre de variables avec 1 valeurs manquantes : 31
In [ ]:
# @title Valeurs Manquantes

import matplotlib.pyplot as plt
import seaborn as sns

# Créer le graphique
plt.figure(figsize=(10, 6))
ax = sns.barplot(x='Variable', y='Valeurs Manquantes', data=missing_values_df, palette="husl")

# Ajouter un titre et des labels
plt.title('Nombre de Valeurs Manquantes par Variable', fontsize=14)
plt.xlabel('Variables', fontsize=12)
plt.ylabel('Nombre de Valeurs Manquantes', fontsize=12)

# Incliner les labels des variables sur l'axe Y pour plus de clarté
plt.xticks(rotation=90)

# Adding annotations
for i, value in enumerate(missing_values_df['Valeurs Manquantes']):
    plt.text(i, value + 0.1, str(value), ha='center')
plt.show()

# Afficher le graphique
plt.tight_layout()
plt.show()
<ipython-input-8-faa6f45df0f6>:8: FutureWarning: 

Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.

  ax = sns.barplot(x='Variable', y='Valeurs Manquantes', data=missing_values_df, palette="husl")
No description has been provided for this image
<Figure size 640x480 with 0 Axes>

Gestion des valeurs manquantes

Les variables n'ayant aucune valeurs (30 valeurs manquantes ) de même que les variables ayant 27 valeurs manquantes sont supprimés. Notons que ces derniers concernent l'évaluation de l'autisme (SRR), qu'on verra dans une autre étude.

In [ ]:
# # Filtrer les colonnes avec moins de 27 valeurs manquantes
TD_Res_cleaned = TD_Res.loc[:, missing_values < 27]

# Vérifier le résultat
TD_Res_cleaned.head()
Out[ ]:
GROUPE Sujet Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long ... MDT Planification Organisation Organisation matérielle Contrôle Indice de méatacognition .IMC CEG = IRC+IMC Négativité Incohérence SIM MAT
0 TD TD1 10.90 2 517 475 992 366 151 0.032708 ... 56.0 73.0 79.0 51.0 63.0 60.0 0.0 4.0 14.0 7.0
1 TD TD2 9.20 1 465 389 854 245 220 0.069070 ... 44.0 49.0 47.0 48.0 45.0 44.0 0.0 2.0 11.0 8.0
2 TD TD3 10.10 2 545 541 1086 215 330 0.034305 ... 41.0 38.0 66.0 48.0 45.0 45.0 1.0 4.0 12.0 8.0
3 TD TD4 10.05 1 471 201 672 273 198 0.014398 ... 60.0 60.0 48.0 51.0 59.0 55.0 0.0 1.0 11.0 8.0
4 TD TD5 6.10 1 444 201 645 226 218 0.051200 ... 53.0 44.0 57.0 52.0 71.0 55.0 1.0 7.0 5.0 9.0

5 rows × 64 columns

Nous feront une imputation pour les valeurs manquantes restantes

In [ ]:
from sklearn.impute import KNNImputer
import pandas as pd

# Séparer les variables numériques et qualitatives
df_numeric = TD_Res_cleaned.select_dtypes(include=['number'])
df_categorical = TD_Res_cleaned.select_dtypes(exclude=['number'])

# Appliquer KNN Imputer (choix de k = 5, peut être ajusté)
knn_imputer = KNNImputer(n_neighbors=5)
df_numeric_imputed = pd.DataFrame(knn_imputer.fit_transform(df_numeric), columns=df_numeric.columns)

# Identifier les colonnes qui étaient entières dans df_numeric AVANT l'imputation
integer_columns = [col for col in df_numeric.columns if pd.api.types.is_integer_dtype(df_numeric[col])]

# Arrondir ces colonnes après l'imputation
df_numeric_imputed[integer_columns] = df_numeric_imputed[integer_columns].round().astype(int)

# Fusionner les données imputées avec les variables qualitatives
df_final = pd.concat([df_categorical, df_numeric_imputed], axis=1)

# Vérifier que toutes les colonnes sont bien réintégrées
print(df_final.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 64 columns):
 #   Column                                  Non-Null Count  Dtype  
---  ------                                  --------------  -----  
 0   GROUPE                                  30 non-null     object 
 1   Sujet                                   30 non-null     object 
 2   Group AGE                               30 non-null     object 
 3   CLASSE                                  30 non-null     object 
 4   Age                                     30 non-null     float64
 5   Sexe                                    30 non-null     int64  
 6   TAju.ms                                 30 non-null     int64  
 7   TExe.ms                                 30 non-null     int64  
 8   TPas.ms                                 30 non-null     int64  
 9   TLoad.ms                                30 non-null     int64  
 10  TUnload.ms                              30 non-null     int64  
 11  CoP_tot_AP.Long                         30 non-null     float64
 12  CoP_tot_ML.Larg                         30 non-null     float64
 13  CoP_loadAP.Long                         30 non-null     float64
 14  CoP_load_ML.Larg                        30 non-null     float64
 15  CoP_unload_ML.Larg                      30 non-null     float64
 16  Vpic_load_AP.ms                         30 non-null     float64
 17  Vpic_load_ML.ms                         30 non-null     float64
 18  Vpic_unload_ML.ms                       30 non-null     float64
 19  BOS_AP_Init.m                           30 non-null     float64
 20  BOS_ML_Init.m                           30 non-null     float64
 21  MOS_AP_FOcr.Long                        30 non-null     float64
 22  MOS_ML_FOcr.Larg                        30 non-null     float64
 23   AGE_AB                                 30 non-null     float64
 24  Weight                                  30 non-null     float64
 25  Height                                  30 non-null     float64
 26  Epaule                                  30 non-null     int64  
 27  Coude                                   30 non-null     int64  
 28  Poignet                                 30 non-null     int64  
 29  Main                                    30 non-null     int64  
 30  MID                                     30 non-null     float64
 31  MIG                                     30 non-null     float64
 32  Fctelle                                 30 non-null     float64
 33  MANUALITE                               30 non-null     float64
 34  QTAC                                    30 non-null     float64
 35  TAC                                     30 non-null     float64
 36  Inattention                             30 non-null     float64
 37  Hyperactivité                           30 non-null     float64
 38  Pb apprentissage                        30 non-null     float64
 39  Pb fct exécutif                         30 non-null     float64
 40  Agressivité                             30 non-null     float64
 41  Pb sociaux                              30 non-null     float64
 42  Index global Conners 3 Total            30 non-null     float64
 43  DSM-IV-TR Inattention                   30 non-null     float64
 44  DSM-IV-TR Impulsivité-Hyperactivité     30 non-null     float64
 45  DSM-IV-TR Trouble des conduites         30 non-null     float64
 46  DSM-IV-TR Trble oppositionprovocation   30 non-null     float64
 47  Anxiete                                 30 non-null     float64
 48  Depression                              30 non-null     float64
 49  Inhibition                              30 non-null     float64
 50  Flexibilité                             30 non-null     float64
 51  Contrôle émotionnel                     30 non-null     float64
 52  Indice Régulation Comportementale .IRC  30 non-null     float64
 53  Initiation                              30 non-null     float64
 54  MDT                                     30 non-null     float64
 55  Planification  Organisation             30 non-null     float64
 56  Organisation matérielle                 30 non-null     float64
 57  Contrôle                                30 non-null     float64
 58  Indice de méatacognition .IMC           30 non-null     float64
 59  CEG = IRC+IMC                           30 non-null     float64
 60  Négativité                              30 non-null     float64
 61  Incohérence                             30 non-null     float64
 62  SIM                                     30 non-null     float64
 63  MAT                                     30 non-null     float64
dtypes: float64(50), int64(10), object(4)
memory usage: 15.1+ KB
None
In [ ]:
df_final.head() #affichage de ma nouvelle base
Out[ ]:
GROUPE Sujet Group AGE CLASSE Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms ... MDT Planification Organisation Organisation matérielle Contrôle Indice de méatacognition .IMC CEG = IRC+IMC Négativité Incohérence SIM MAT
0 TD TD1 10-11y CM2 10.90 2 517 475 992 366 ... 56.0 73.0 79.0 51.0 63.0 60.0 0.0 4.0 14.0 7.0
1 TD TD2 8-9y CM1 9.20 1 465 389 854 245 ... 44.0 49.0 47.0 48.0 45.0 44.0 0.0 2.0 11.0 8.0
2 TD TD3 10-11y CM2 10.10 2 545 541 1086 215 ... 41.0 38.0 66.0 48.0 45.0 45.0 1.0 4.0 12.0 8.0
3 TD TD4 10-11y CM2 10.05 1 471 201 672 273 ... 60.0 60.0 48.0 51.0 59.0 55.0 0.0 1.0 11.0 8.0
4 TD TD5 6-7y CE1 6.10 1 444 201 645 226 ... 53.0 44.0 57.0 52.0 71.0 55.0 1.0 7.0 5.0 9.0

5 rows × 64 columns

In [ ]:
df_final.isnull().sum()
Out[ ]:
0
GROUPE 0
Sujet 0
Group AGE 0
CLASSE 0
Age 0
... ...
CEG = IRC+IMC 0
Négativité 0
Incohérence 0
SIM 0
MAT 0

64 rows × 1 columns


Détection de doublons

In [ ]:
# Vérifiez les doublons en fonction de toutes les colonnes
duplicates = df_final[df_final.duplicated(keep=False)]

if not duplicates.empty:
  print("Les lignes dupliquées trouvées:")
  print(duplicates)
else:
  print("Pas de lignes dupliquées trouvées.")
Pas de lignes dupliquées trouvées.

Nous n'avons détecter aucun doublon. Vérifions s'il y a des outliers avec IQR (Interquartile Range) et les boxplot

Détection de ouitliers

In [ ]:
import numpy as np
import pandas as pd

# Sélectionner uniquement les colonnes numériques
df_numeric = df_final.select_dtypes(include=['number']).copy()

# Détection des outliers et remplacement par NaN
outliers_dict = {}

for col in df_numeric.columns:
    Q1 = np.percentile(df_numeric[col].dropna(), 25)  # Premier quartile
    Q3 = np.percentile(df_numeric[col].dropna(), 75)  # Troisième quartile
    IQR = Q3 - Q1  # Intervalle interquartile

    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR

    # Identifier les valeurs aberrantes et les remplacer par NaN
    outliers = df_numeric[(df_numeric[col] < lower_bound) | (df_numeric[col] > upper_bound)]

    if not outliers.empty:  # S'il y a des outliers
        outliers_dict[col] = len(outliers)
        df_numeric.loc[(df_numeric[col] < lower_bound) | (df_numeric[col] > upper_bound), col] = np.nan  # Remplacer par NaN

# Afficher le nombre d'outliers détectés par variable
print("Nombre d'outliers détectés par variable :")
print(outliers_dict)
Nombre d'outliers détectés par variable :
{'TAju.ms': 3, 'TLoad.ms': 2, 'CoP_tot_AP.Long': 1, 'CoP_unload_ML.Larg': 1, 'MOS_AP_FOcr.Long': 3, 'MOS_ML_FOcr.Larg': 1, 'Weight': 1, 'Main': 1, 'Fctelle': 5, 'MANUALITE': 1, 'Inattention': 1, 'Hyperactivité': 2, 'Pb apprentissage': 6, 'Agressivité': 1, 'Pb sociaux': 3, 'DSM-IV-TR Impulsivité-Hyperactivité': 1, 'DSM-IV-TR Trouble des conduites': 2, 'DSM-IV-TR Trble oppositionprovocation': 1, 'Anxiete': 1, 'Inhibition': 1, 'Flexibilité': 2, 'Contrôle émotionnel': 1, 'Indice Régulation Comportementale .IRC': 2, 'Initiation': 1, 'Organisation matérielle': 1, 'Indice de méatacognition .IMC': 2, 'Négativité': 2, 'SIM': 2}

Nous avons détecter d'outliers pour certaines de nos varibles, affichons les via un box plot

In [ ]:
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(15, 8))
df_numeric.boxplot(rot=50)  # Rotation des noms des variables pour lisibilité
plt.title("Boxplot des variables numériques (détection des outliers)")
plt.show()
No description has been provided for this image
In [ ]:
from sklearn.impute import KNNImputer

# Appliquer KNN Imputer
knn_imputer = KNNImputer(n_neighbors=5, weights='uniform')  # K=5, peut être ajusté
df_imputed = pd.DataFrame(knn_imputer.fit_transform(df_numeric), columns=df_numeric.columns)

# Remettre les colonnes non numériques dans le DataFrame final
df_final_corrected = df_final.copy()
df_final_corrected[df_numeric.columns] = df_imputed

# Vérifier si les valeurs aberrantes ont été remplacées
print("\n✅ Aperçu des données après correction des outliers avec KNN Imputer :")
print(df_final_corrected.head())
✅ Aperçu des données après correction des outliers avec KNN Imputer :
  GROUPE Sujet Group AGE CLASSE    Age  Sexe  TAju.ms  TExe.ms  TPas.ms  \
0     TD   TD1    10-11y    CM2  10.90   2.0    517.0    475.0    992.0   
1     TD   TD2      8-9y    CM1   9.20   1.0    465.0    389.0    854.0   
2     TD   TD3    10-11y    CM2  10.10   2.0    545.0    541.0   1086.0   
3     TD   TD4    10-11y    CM2  10.05   1.0    471.0    201.0    672.0   
4     TD   TD5      6-7y    CE1   6.10   1.0    444.0    201.0    645.0   

   TLoad.ms  ...   MDT  Planification  Organisation  Organisation matérielle  \
0     366.0  ...  56.0                         73.0                     51.8   
1     245.0  ...  44.0                         49.0                     47.0   
2     215.0  ...  41.0                         38.0                     66.0   
3     273.0  ...  60.0                         60.0                     48.0   
4     226.0  ...  53.0                         44.0                     57.0   

   Contrôle  Indice de méatacognition .IMC  CEG = IRC+IMC  Négativité  \
0      51.0                           63.0           60.0         0.0   
1      48.0                           45.0           44.0         0.0   
2      48.0                           45.0           45.0         1.0   
3      51.0                           59.0           55.0         0.0   
4      52.0                           71.0           55.0         1.0   

   Incohérence   SIM  MAT  
0          4.0  14.0  7.0  
1          2.0  11.0  8.0  
2          4.0  12.0  8.0  
3          1.0  11.0  8.0  
4          7.0  11.6  9.0  

[5 rows x 64 columns]
In [ ]:
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(15, 8))
df_imputed.boxplot(rot=70)  # Rotation des noms des variables pour lisibilité
plt.title("Boxplot des variables numériques (après imputation des outliers)")
plt.show()
No description has been provided for this image

On constate qu'il y a plusieurs enfants avec des caractéristiques atypiques. On peut expliquer certains comme l'enfant le plus lourd (49,8) est également le plus élancé (157).

Donc on laissera les valeurs extremes telles qu'elles sont, puis nous chercherons à expliques ces valeurs extrèmes dans notre rapport.

Mais une d'entre elles semble aberrantes, c'est au niveau du sujet TD19, pour la variable TUnload.ms. Cette variable est une durée alors qu'on y observe une valeur négative : -168.

2.3 Analyse descriptive¶

Nous allons nous focalier sur les variables qui caractérisent l’initiation de la marche at aux données anthropométriques

In [ ]:
# Sélectionner les colonnes 1 à 21 et 24 à 31
df_new = df_final_corrected.iloc[:, list(range(23)) + list(range(24, 32))]  # .iloc utilise les indices des colonnes

# Supprimer les colonnes "Group AGE" et "CLASSE"
df_new = df_new.drop(columns=["Group AGE", "CLASSE"])

# Vérifier la structure du nouveau dataframe
print(df_new.info())

# Afficher les premières lignes pour vérification
df_new.head()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 29 columns):
 #   Column              Non-Null Count  Dtype  
---  ------              --------------  -----  
 0   GROUPE              30 non-null     object 
 1   Sujet               30 non-null     object 
 2   Age                 30 non-null     float64
 3   Sexe                30 non-null     float64
 4   TAju.ms             30 non-null     float64
 5   TExe.ms             30 non-null     float64
 6   TPas.ms             30 non-null     float64
 7   TLoad.ms            30 non-null     float64
 8   TUnload.ms          30 non-null     float64
 9   CoP_tot_AP.Long     30 non-null     float64
 10  CoP_tot_ML.Larg     30 non-null     float64
 11  CoP_loadAP.Long     30 non-null     float64
 12  CoP_load_ML.Larg    30 non-null     float64
 13  CoP_unload_ML.Larg  30 non-null     float64
 14  Vpic_load_AP.ms     30 non-null     float64
 15  Vpic_load_ML.ms     30 non-null     float64
 16  Vpic_unload_ML.ms   30 non-null     float64
 17  BOS_AP_Init.m       30 non-null     float64
 18  BOS_ML_Init.m       30 non-null     float64
 19  MOS_AP_FOcr.Long    30 non-null     float64
 20  MOS_ML_FOcr.Larg    30 non-null     float64
 21  Weight              30 non-null     float64
 22  Height              30 non-null     float64
 23  Epaule              30 non-null     float64
 24  Coude               30 non-null     float64
 25  Poignet             30 non-null     float64
 26  Main                30 non-null     float64
 27  MID                 30 non-null     float64
 28  MIG                 30 non-null     float64
dtypes: float64(27), object(2)
memory usage: 6.9+ KB
None
Out[ ]:
GROUPE Sujet Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long ... MOS_AP_FOcr.Long MOS_ML_FOcr.Larg Weight Height Epaule Coude Poignet Main MID MIG
0 TD TD1 10.90 2.0 517.0 475.0 992.0 366.0 151.0 0.032708 ... -0.769317 -0.019617 25.3 131.0 75.0 57.0 49.0 25.0 63.0 63.0
1 TD TD2 9.20 1.0 465.0 389.0 854.0 245.0 220.0 0.069070 ... -0.587606 -0.046824 33.0 136.0 87.0 70.0 50.0 23.0 70.0 70.0
2 TD TD3 10.10 2.0 545.0 541.0 1086.0 215.0 330.0 0.034305 ... -0.682419 0.085539 30.6 138.0 82.0 57.0 45.0 26.0 72.5 72.0
3 TD TD4 10.05 1.0 471.0 201.0 672.0 273.0 198.0 0.014398 ... -0.906076 -0.110997 31.5 134.0 70.0 57.0 44.0 20.0 71.0 71.0
4 TD TD5 6.10 1.0 444.0 201.0 645.0 226.0 218.0 0.051200 ... -0.914220 -0.143763 29.0 130.0 82.0 64.0 51.0 29.0 64.0 64.0

5 rows × 29 columns

In [ ]:
df_new.describe()
Out[ ]:
Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long CoP_tot_ML.Larg CoP_loadAP.Long ... MOS_AP_FOcr.Long MOS_ML_FOcr.Larg Weight Height Epaule Coude Poignet Main MID MIG
count 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 ... 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.000000 30.00000 30.00000
mean 8.609333 1.566667 505.240000 288.200000 791.066667 280.106667 213.666667 0.039968 0.113465 0.195808 ... -0.854219 -0.069800 29.037000 134.733333 72.133333 56.900000 47.333333 23.533333 67.60000 67.45000
std 1.714623 0.504007 55.194338 109.350875 148.198360 65.573664 78.331010 0.012413 0.021794 0.079954 ... 0.155933 0.069196 6.482568 10.578714 14.048520 7.774184 4.261563 2.825174 7.69505 7.76081
min 6.000000 1.000000 420.000000 201.000000 474.000000 137.000000 75.000000 0.014398 0.073276 -0.005183 ... -1.184755 -0.215196 19.300000 116.500000 53.000000 44.000000 39.000000 18.000000 57.00000 57.00000
25% 7.137500 1.000000 455.000000 201.000000 673.750000 235.250000 153.750000 0.032430 0.098253 0.120784 ... -0.954376 -0.113639 24.150000 128.000000 61.000000 51.000000 44.000000 22.000000 62.00000 62.00000
50% 8.350000 2.000000 507.500000 216.500000 752.000000 281.000000 203.000000 0.037639 0.111075 0.224284 ... -0.866500 -0.060387 29.000000 133.500000 70.000000 56.500000 47.000000 23.000000 66.00000 65.50000
75% 10.177500 2.000000 543.250000 392.750000 889.250000 320.600000 262.250000 0.047277 0.130610 0.260647 ... -0.764637 -0.026904 33.000000 140.250000 82.000000 62.750000 50.000000 25.000000 72.12500 71.75000
max 11.080000 2.000000 635.000000 541.000000 1086.000000 404.000000 363.000000 0.069070 0.156527 0.304639 ... -0.453764 0.085539 45.000000 157.000000 99.000000 70.000000 58.000000 29.000000 84.00000 84.00000

8 rows × 27 columns

Passons à l'exploration proprement dite de nos données

In [ ]:
import pandas as pd
import numpy as np

def create_demographic_table(df):
    # Création du tableau démographique par sexe
    demographic_stats = df.groupby('Sexe').agg({
        'Age': ['count', 'mean', 'std'],
        'Height': 'mean',
        'Weight': 'mean'
    })

    # Formatage du tableau
    demographic_stats.columns = ['N', 'Age_mean', 'Age_std', 'Height', 'Weight']
    demographic_stats['Age'] = demographic_stats.apply(
        lambda x: f"{x['Age_mean']:.1f} ± {x['Age_std']:.1f}", axis=1)

    # Renommage des index
    demographic_stats.index = ['Garçons', 'Filles']

    return demographic_stats[['N', 'Age', 'Height', 'Weight']]

def create_temporal_table(df):
    # Paramètres temporels
    temporal_params = ['TAju.ms', 'TExe.ms', 'TPas.ms']

    # Calcul des statistiques
    temporal_stats = df[temporal_params].agg(['mean', 'std', 'min', 'max'])

    # Reformater le tableau pour avoir les paramètres en ligne et les stats en colonnes
    temporal_stats = temporal_stats.T  # Transposer pour mettre les variables en lignes

    # Renommer les index avec des noms plus compréhensibles
    temporal_stats.index = ["Temps d'ajustement (ms)", "Temps d'exécution (ms)", "Temps de pas (ms)"]

    return temporal_stats


def create_postural_table(df):
    # Paramètres posturaux
    postural_params = ['CoP_tot_AP.Long', 'CoP_tot_ML.Larg',
                      'BOS_AP_Init.m', 'BOS_ML_Init.m']

    # Calcul des statistiques
    postural_stats = df[postural_params].agg(['mean', 'std', 'min', 'max'])

    # Reformater le tableau pour avoir les paramètres en ligne et les stats en colonnes
    postural_stats = postural_stats.T  # Transposer pour mettre les variables en lignes

    # Formatage du tableau
    postural_stats.index = ['CoP AP (mm)', 'CoP ML (mm)',
                          'Base de support AP (m)',
                          'Base de support ML (m)']

    return postural_stats

# Lecture des données
df = df_new

# Création des tableaux
demographic_table = create_demographic_table(df)
temporal_table = create_temporal_table(df)
postural_table = create_postural_table(df)

# Affichage des tableaux
print("Tableau 1 : Caractéristiques démographiques par sexe")
print(demographic_table.to_string())
Tableau 1 : Caractéristiques démographiques par sexe
          N        Age      Height     Weight
Garçons  13  8.5 ± 1.7  134.423077  29.203846
Filles   17  8.7 ± 1.8  134.970588  29.947059

Ce tableau présente les caractéristiques démographiques des participants, réparties par sexe. On observe que l'échantillon est composé de 13 garçons et 17 filles, soit un total de 30 participants.

L'âge moyen des participants est de 8,6 ans, avec un écart-type de 1,7 ans. Il n'y a pas de différence notable d'âge moyen entre les garçons (8,5 ans) et les filles (8,7 ans), et la variabilité de l'âge est similaire dans les deux groupes.

La taille moyenne des participants est de 134,7 cm. Les filles sont légèrement plus grandes en moyenne (134,97 cm) que les garçons (134,42 cm), mais cette différence est minime.

Le poids moyen des participants est de 29,6 kg. Les filles pèsent en moyenne un peu plus lourd (29,95 kg) que les garçons (29,20 kg), mais là encore, la différence n'est pas très importante.

In [ ]:
# prompt: pie chart 3D with demographic_table['N']

import matplotlib.pyplot as plt

# Assuming demographic_table is already created as in your provided code

# Create the pie chart
plt.figure(figsize=(8, 8))  # Adjust figure size as needed
plt.pie(demographic_table['N'], labels=demographic_table.index, autopct='%1.1f%%', startangle=90, explode=[0.1, 0])  # Add explode for better visualization

# Add a title
plt.title('Distribution Démographique par Genre')

# Display the chart
plt.show()
No description has been provided for this image
In [ ]:
print("\nTableau 2 : Paramètres temporels de l'initiation à la marche")
print(temporal_table.to_string())
Tableau 2 : Paramètres temporels de l'initiation à la marche
                               mean         std    min     max
Temps d'ajustement (ms)  502.866667   97.402731  273.0   827.0
Temps d'exécution (ms)   288.200000  109.350875  201.0   541.0
Temps de pas (ms)        791.066667  148.198360  474.0  1086.0

Ce tableau révèle les aspects temporels de l'initiation à la marche.

On observe que le temps d'ajustement, nécessaire à la préparation du mouvement, est en moyenne de 503 ms, avec une variabilité de 97 ms.

Le temps d'exécution du pas est plus court (288 ms en moyenne), mais sa variabilité est plus importante (109 ms).

Enfin, le temps de pas, qui correspond à la durée entre deux contacts du talon avec le sol, est le plus long (791 ms en moyenne) et présente également une variabilité substantielle (148 ms).

Ces données suggèrent que l'initiation à la marche chez les enfants implique une phase de préparation notable, suivie d'une exécution rapide du pas et d'un cycle de pas globalement plus long et variable.

In [ ]:
print("\nTableau 3 : Paramètres posturaux")
print(postural_table.to_string())
Tableau 3 : Paramètres posturaux
                            mean       std       min       max
CoP AP (mm)             0.041073  0.013806  0.014398  0.073069
CoP ML (mm)             0.113465  0.021794  0.073276  0.156527
Base de support AP (m)  0.171151  0.015024  0.147411  0.203916
Base de support ML (m)  0.239107  0.024914  0.193978  0.289123

Ce tableau décrit la posture des enfants lors de l'initiation à la marche.

On constate que le centre de pression (CoP), qui reflète le point d'application de la force au sol, est légèrement décalé vers l'avant (0,041 mm) et latéralement (0,113 mm). La base de support, qui correspond à la surface délimitée par les pieds, mesure en moyenne 0,171 m dans le sens antéro-postérieur et 0,239 m dans le sens médio-latéral.

Ces informations indiquent que les enfants adoptent une posture légèrement penchée vers l'avant et avec une base de support relativement large, ce qui peut contribuer à leur stabilité lors des premiers pas.

Ensuite, faisons quelques graphiques

In [ ]:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# Configuration du style des graphiques
sns.set_theme(style="darkgrid")
sns.set_palette("husl")

# 1. Graphique des temps de marche
def plot_walking_times():
    # Sélection des 10 premiers sujets pour la lisibilité
    df_subset = df.head(10)

    # Création de la figure
    plt.figure(figsize=(12, 6))

    # Positions des barres
    x = np.arange(len(df_subset))
    width = 0.25

    # Création des barres pour chaque mesure de temps
    plt.bar(x - width, df_subset['TAju.ms'], width, label='Temps d\'ajustement')
    plt.bar(x, df_subset['TExe.ms'], width, label='Temps d\'exécution')
    plt.bar(x + width, df_subset['TPas.ms'], width, label='Temps de pas')

    # Personnalisation du graphique
    plt.xlabel('Sujets')
    plt.ylabel('Temps (ms)')
    plt.title('Distribution des temps de marche par sujet')
    plt.xticks(x, df_subset['Sujet'], rotation=45)
    plt.legend()
    plt.tight_layout()

    # Affichage
    plt.show()

# 2. Graphique Age vs Centre de Pression (CoP)
def plot_age_vs_cop():
    # Création de la figure
    fig, ax = plt.subplots(figsize=(12, 6))

    # Tracé des données
    scatter1 = ax.scatter(df['Age'], df['CoP_tot_AP.Long'],
                         label='CoP Antéro-Postérieur', alpha=0.6)
    scatter2 = ax.scatter(df['Age'], df['CoP_tot_ML.Larg'],
                         label='CoP Médio-Latéral', alpha=0.6)

    # Ajout des lignes de régression
    z1 = np.polyfit(df['Age'], df['CoP_tot_AP.Long'], 1)
    p1 = np.poly1d(z1)
    z2 = np.polyfit(df['Age'], df['CoP_tot_ML.Larg'], 1)
    p2 = np.poly1d(z2)

    ax.plot(df['Age'], p1(df['Age']), "--", color=scatter1.get_facecolor()[0])
    ax.plot(df['Age'], p2(df['Age']), "--", color=scatter2.get_facecolor()[0])

    # Personnalisation du graphique
    ax.set_xlabel('Âge (années)')
    ax.set_ylabel('Centre de Pression (mm)')
    ax.set_title('Relation entre l\'âge et le Centre de Pression')
    ax.legend()
    plt.tight_layout()

    # Affichage
    plt.show()

# 3. Analyse statistique descriptive
def print_descriptive_stats():
    # Statistiques descriptives des paramètres temporels
    temps_stats = df[['TAju.ms', 'TExe.ms', 'TPas.ms']].describe()
    print("\nStatistiques descriptives des paramètres temporels :")
    print(temps_stats)

    # Statistiques descriptives du CoP
    cop_stats = df[['CoP_tot_AP.Long', 'CoP_tot_ML.Larg']].describe()
    print("\nStatistiques descriptives du Centre de Pression :")
    print(cop_stats)

    # Corrélations
    corr_matrix = df[['Age', 'TAju.ms', 'TExe.ms', 'TPas.ms',
                      'CoP_tot_AP.Long', 'CoP_tot_ML.Larg']].corr()
    print("\nMatrice de corrélation :")
    print(corr_matrix)

# Bonus : Visualisation des corrélations
def plot_correlation_matrix():
    # Sélection des variables d'intérêt
    variables = ['Age', 'TAju.ms', 'TExe.ms', 'TPas.ms',
                      'CoP_tot_AP.Long', 'CoP_tot_ML.Larg']
    corr_matrix = df[variables].corr()

    # Création de la figure
    plt.figure(figsize=(10, 8))
    sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0,
                fmt='.2f', square=True)
    plt.title('Matrice de corrélation des paramètres de marche')
    plt.tight_layout()
    plt.show()

# Exécution des fonctions
if __name__ == "__main__":
    plot_walking_times()
    plot_age_vs_cop()
    print_descriptive_stats()
    plot_correlation_matrix()
No description has been provided for this image
No description has been provided for this image
Statistiques descriptives des paramètres temporels :
          TAju.ms     TExe.ms      TPas.ms
count   30.000000   30.000000    30.000000
mean   502.866667  288.200000   791.066667
std     97.402731  109.350875   148.198360
min    273.000000  201.000000   474.000000
25%    455.000000  201.000000   673.750000
50%    507.500000  216.500000   752.000000
75%    543.250000  392.750000   889.250000
max    827.000000  541.000000  1086.000000

Statistiques descriptives du Centre de Pression :
       CoP_tot_AP.Long  CoP_tot_ML.Larg
count        30.000000        30.000000
mean          0.041073         0.113465
std           0.013806         0.021794
min           0.014398         0.073276
25%           0.032430         0.098253
50%           0.037639         0.111075
75%           0.048384         0.130610
max           0.073069         0.156527

Matrice de corrélation :
                      Age   TAju.ms   TExe.ms   TPas.ms  CoP_tot_AP.Long  \
Age              1.000000  0.011044  0.029349  0.028914         0.213706   
TAju.ms          0.011044  1.000000  0.024310  0.675183        -0.096264   
TExe.ms          0.029349  0.024310  1.000000  0.753846        -0.259932   
TPas.ms          0.028914  0.675183  0.753846  1.000000        -0.255065   
CoP_tot_AP.Long  0.213706 -0.096264 -0.259932 -0.255065         1.000000   
CoP_tot_ML.Larg  0.210177  0.237036 -0.253940 -0.031583         0.248957   

                 CoP_tot_ML.Larg  
Age                     0.210177  
TAju.ms                 0.237036  
TExe.ms                -0.253940  
TPas.ms                -0.031583  
CoP_tot_AP.Long         0.248957  
CoP_tot_ML.Larg         1.000000  
No description has been provided for this image

Maintenant, visualisons la distribution des âges et la relation entre l'âge et l'une des mesures de performance, comme « TAju.ms ».

Je vais créer des histogrammes et des nuages ​​de points pour ces analyses. Continuons avec ça.

In [ ]:
# Setting up the visualizations
plt.figure(figsize=(14, 6))

# Histogram of Age
plt.subplot(1, 2, 1)
sns.histplot(df['Age'], bins=10, kde=True)
plt.title('Distribution of Age')
plt.xlabel('Age')
plt.ylabel('Frequency')

# Scatter plot of Age vs TAju.ms
plt.subplot(1, 2, 2)
sns.scatterplot(x='Age', y='TAju.ms', data=df)
plt.title('Age vs TAju.ms')
plt.xlabel('Age')
plt.ylabel('TAju.ms')

plt.tight_layout()
plt.show()
No description has been provided for this image

Les visualisations montrent la distribution des âges et la relation entre l'âge et la mesure de performance « TAju.ms ».

L'histogramme indique la répartition des âges dans l'ensemble de données, tandis que le nuage de points permet d'identifier toute corrélation entre l'âge et « TAju.ms ».

Ensuite, nous explorerons d'autres relations dans les données, telles que la distribution du « sexe » et son impact sur d'autres mesures de performance. Nous créerons un graphique de comptage pour le « sexe » et des graphiques en boîte pour comparer les « TAju.ms » entre les différents sexes. Continuons cette analyse.

In [ ]:
# Setting up the next visualizations
plt.figure(figsize=(14, 6))

# Count plot for Sexe
plt.subplot(1, 2, 1)
sns.countplot(x='Sexe', hue="Sexe",data=df)
plt.title('Count of Sexe')
plt.xlabel('Sexe')
plt.ylabel('Count')

# Box plot of TAju.ms by Sexe
plt.subplot(1, 2, 2)
sns.boxplot(x='Sexe', y='TAju.ms',hue="Sexe", data=df)
plt.title('TAju.ms by Sexe')
plt.xlabel('Sexe')
plt.ylabel('TAju.ms')

plt.tight_layout()
plt.show()
No description has been provided for this image

Les visualisations montrent le nombre d'individus par « sexe » et la distribution de « TAju.ms » entre les différents sexes.

Le graphique de comptage indique le nombre de garçons et de filles dans l'ensemble de données, tandis que le graphique en boîte révèle comment « TAju.ms » varie entre les sexes, mettant en évidence les différences potentielles de performance.

Ensuite, nous explorerons des mesures de performance supplémentaires, telles que « TExe.ms » et « TPas.ms », pour voir comment elles se rapportent à l'âge et au sexe. Nous créerons des diagrammes de dispersion pour ces mesures par rapport à l'âge et des graphiques en boîte pour les comparer par sexe. Continuons cette analyse.

In [ ]:
# Setting up the next visualizations for TExe.ms and TPas.ms
plt.figure(figsize=(14, 12))

# Scatter plot of Age vs TExe.ms
plt.subplot(2, 2, 1)
sns.scatterplot(x='Age', y='TExe.ms', data=df)
plt.title('Age vs TExe.ms')
plt.xlabel('Age')
plt.ylabel('TExe.ms')

# Box plot of TExe.ms by Sexe
plt.subplot(2, 2, 2)
sns.boxplot(x='Sexe', y='TExe.ms',hue="Sexe", data=df)
plt.title('TExe.ms by Sexe')
plt.xlabel('Sexe')
plt.ylabel('TExe.ms')

# Scatter plot of Age vs TPas.ms
plt.subplot(2, 2, 3)
sns.scatterplot(x='Age', y='TPas.ms', data=df)
plt.title('Age vs TPas.ms')
plt.xlabel('Age')
plt.ylabel('TPas.ms')

# Box plot of TPas.ms by Sexe
plt.subplot(2, 2, 4)
sns.boxplot(x='Sexe', y='TPas.ms',hue="Sexe", data=df)
plt.title('TPas.ms by Sexe')
plt.xlabel('Sexe')
plt.ylabel('TPas.ms')

plt.tight_layout()
plt.show()
No description has been provided for this image

Les visualisations illustrent les relations entre l'âge et les indicateurs de performance « TExe.ms » et « TPas.ms », ainsi que leurs distributions selon le sexe. Les diagrammes de dispersion aident à identifier les tendances, tandis que les diagrammes en boîte donnent un aperçu des différences dans les indicateurs de performance entre les hommes et les femmes.

Ensuite, nous analyserons les corrélations entre les différents indicateurs de performance pour comprendre comment ils sont liés les uns aux autres. Nous créerons une carte thermique de corrélation pour visualiser ces relations. Continuons avec cette analyse.

In [ ]:
# Filtering the numeric columns for correlation analysis
numeric_df = df.select_dtypes(include=['float64', 'int64'])

# Calculating the correlation matrix
correlation_matrix = numeric_df.corr()

# Setting up the heatmap
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=False, fmt='.2f', cmap='coolwarm', square=True, cbar_kws={'shrink': .8})
plt.title('Correlation Heatmap of Performance Metrics')
plt.show()
No description has been provided for this image

La carte thermique de corrélation a été générée avec succès, affichant les relations entre les mesures de performance numériques. Cette visualisation nous permet d'identifier les mesures fortement corrélées entre elles, ce qui peut éclairer une analyse ou une modélisation plus approfondie. Ensuite, je résumerai les principales conclusions de la carte thermique et explorerai toutes les relations spécifiques qui pourraient justifier une enquête plus approfondie. S'il existe des mesures ou des relations particulières, vous aimeriez

In [ ]:
correlation_matrix
Out[ ]:
Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long CoP_tot_ML.Larg CoP_loadAP.Long ... MOS_AP_FOcr.Long MOS_ML_FOcr.Larg Weight Height Epaule Coude Poignet Main MID MIG
Age 1.000000 0.063498 0.011044 0.029349 0.028914 -0.112533 0.129448 0.213706 0.210177 0.134787 ... -0.005848 0.172981 0.648591 0.794803 0.333151 0.291046 0.432212 0.262119 0.749922 0.754120
Sexe 0.063498 1.000000 -0.020885 0.389540 0.273703 0.007305 -0.033482 -0.227671 -0.137990 -0.101708 ... -0.035236 0.036994 0.049969 0.026085 -0.186361 -0.213854 -0.107030 0.064704 0.024895 0.020717
TAju.ms 0.011044 -0.020885 1.000000 0.024310 0.675183 0.627070 0.598670 -0.096264 0.237036 -0.081245 ... -0.104681 0.057249 0.027769 0.138294 0.000517 0.085411 -0.177002 -0.046151 0.212546 0.203282
TExe.ms 0.029349 0.389540 0.024310 1.000000 0.753846 0.112423 -0.085374 -0.259932 -0.253940 -0.117716 ... 0.459436 0.377609 0.067549 -0.097934 0.384514 0.250376 0.008510 0.136956 -0.123804 -0.143684
TPas.ms 0.028914 0.273703 0.675183 0.753846 1.000000 0.495092 0.330478 -0.255065 -0.031583 -0.140257 ... 0.270202 0.316252 0.068093 0.018631 0.284060 0.240881 -0.110055 0.070723 0.048344 0.027586
TLoad.ms -0.112533 0.007305 0.627070 0.112423 0.495092 1.000000 -0.248539 -0.224985 0.032482 0.125085 ... -0.102423 0.136997 -0.184005 -0.085568 -0.077153 0.050200 -0.242707 -0.078828 -0.075390 -0.082011
TUnload.ms 0.129448 -0.033482 0.598670 -0.085374 0.330478 -0.248539 1.000000 0.111647 0.261348 -0.229649 ... -0.024849 -0.069685 0.223740 0.259953 0.079979 0.054587 0.029475 0.023670 0.341818 0.337106
CoP_tot_AP.Long 0.213706 -0.227671 -0.096264 -0.259932 -0.255065 -0.224985 0.111647 1.000000 0.248957 0.633898 ... -0.311187 -0.346935 0.274871 0.319996 0.193154 0.191282 0.381351 0.155789 0.352783 0.371353
CoP_tot_ML.Larg 0.210177 -0.137990 0.237036 -0.253940 -0.031583 0.032482 0.261348 0.248957 1.000000 0.179794 ... -0.123429 -0.284412 0.523828 0.560383 0.317122 0.199539 0.334166 0.059304 0.507786 0.514644
CoP_loadAP.Long 0.134787 -0.101708 -0.081245 -0.117716 -0.140257 0.125085 -0.229649 0.633898 0.179794 1.000000 ... -0.468985 -0.139387 0.215175 0.236748 0.309317 0.384767 0.320710 0.199306 0.169640 0.181703
CoP_load_ML.Larg 0.347639 -0.201847 0.167691 -0.216519 -0.049548 0.228846 -0.026799 0.337423 0.659826 0.479280 ... -0.144091 0.128256 0.480334 0.506703 0.438067 0.387757 0.342866 0.222173 0.499993 0.508010
CoP_unload_ML.Larg 0.058754 0.040619 0.276699 -0.271914 -0.018777 -0.041995 0.387252 0.108798 0.595402 -0.125436 ... -0.163713 -0.578190 0.125206 0.257260 -0.098126 -0.220148 0.033815 -0.138605 0.192260 0.197202
Vpic_load_AP.ms 0.411568 -0.228411 -0.207396 -0.181661 -0.270352 -0.157398 -0.096041 0.628571 0.386659 0.784455 ... -0.276617 -0.221167 0.444601 0.465429 0.467503 0.415330 0.577151 0.249944 0.323109 0.342437
Vpic_load_ML.ms 0.321339 -0.114034 -0.019307 -0.239185 -0.189176 -0.008860 -0.014896 0.423050 0.608232 0.553975 ... -0.134461 0.001252 0.537496 0.592737 0.339165 0.342577 0.424116 0.253251 0.600104 0.599017
Vpic_unload_ML.ms -0.037359 -0.221397 -0.132228 -0.030353 -0.109303 0.397048 -0.572700 -0.120981 0.280752 -0.011744 ... 0.147037 0.064203 -0.102777 -0.020423 -0.097187 -0.188247 -0.202074 -0.291185 -0.001079 0.007103
BOS_AP_Init.m 0.715142 0.084120 0.076362 0.024275 0.068100 -0.120702 0.219071 0.353622 0.393082 0.317790 ... 0.091462 0.023844 0.845679 0.884395 0.399610 0.474045 0.635343 0.503196 0.844139 0.835927
BOS_ML_Init.m -0.054450 -0.090116 -0.095760 0.057009 -0.020873 -0.169127 0.054835 -0.024825 0.460813 -0.042940 ... 0.089436 -0.035938 0.300190 0.186107 0.215846 0.203909 0.190054 0.012172 0.163641 0.165291
MOS_AP_FOcr.Long -0.005848 -0.035236 -0.104681 0.459436 0.270202 -0.102423 -0.024849 -0.311187 -0.123429 -0.468985 ... 1.000000 0.308709 0.033022 -0.033244 0.172967 0.098496 0.071063 0.151247 -0.011065 -0.026736
MOS_ML_FOcr.Larg 0.172981 0.036994 0.057249 0.377609 0.316252 0.136997 -0.069685 -0.346935 -0.284412 -0.139387 ... 0.308709 1.000000 0.149291 0.009685 0.200844 0.219487 0.075887 0.056847 0.090251 0.069749
Weight 0.648591 0.049969 0.027769 0.067549 0.068093 -0.184005 0.223740 0.274871 0.523828 0.215175 ... 0.033022 0.149291 1.000000 0.871518 0.607289 0.567627 0.746298 0.527497 0.819555 0.810543
Height 0.794803 0.026085 0.138294 -0.097934 0.018631 -0.085568 0.259953 0.319996 0.560383 0.236748 ... -0.033244 0.009685 0.871518 1.000000 0.408847 0.370317 0.573797 0.356038 0.946877 0.948640
Epaule 0.333151 -0.186361 0.000517 0.384514 0.284060 -0.077153 0.079979 0.193154 0.317122 0.309317 ... 0.172967 0.200844 0.607289 0.408847 1.000000 0.846284 0.663905 0.611058 0.293491 0.285976
Coude 0.291046 -0.213854 0.085411 0.250376 0.240881 0.050200 0.054587 0.191282 0.199539 0.384767 ... 0.098496 0.219487 0.567627 0.370317 0.846284 1.000000 0.589108 0.680551 0.302215 0.289395
Poignet 0.432212 -0.107030 -0.177002 0.008510 -0.110055 -0.242707 0.029475 0.381351 0.334166 0.320710 ... 0.071063 0.075887 0.746298 0.573797 0.663905 0.589108 1.000000 0.563184 0.460570 0.453540
Main 0.262119 0.064704 -0.046151 0.136956 0.070723 -0.078828 0.023670 0.155789 0.059304 0.199306 ... 0.151247 0.056847 0.527497 0.356038 0.611058 0.680551 0.563184 1.000000 0.304562 0.294120
MID 0.749922 0.024895 0.212546 -0.123804 0.048344 -0.075390 0.341818 0.352783 0.507786 0.169640 ... -0.011065 0.090251 0.819555 0.946877 0.293491 0.302215 0.460570 0.304562 1.000000 0.998571
MIG 0.754120 0.020717 0.203282 -0.143684 0.027586 -0.082011 0.337106 0.371353 0.514644 0.181703 ... -0.026736 0.069749 0.810543 0.948640 0.285976 0.289395 0.453540 0.294120 0.998571 1.000000

27 rows × 27 columns

Autres graphes

In [ ]:
# Initialisation du graphique
plt.figure(figsize=(12, 6))

# Création du scatter plot
sns.scatterplot(x="Sujet", y="TAju.ms", hue="Sexe", data=df, palette={1: "blue", 2: "red"})

# Ajout d'une ligne représentant la moyenne
plt.axhline(y=df["TAju.ms"].mean(), color="green", linestyle="-")

# Rotation des labels en abscisse pour améliorer la lisibilité
plt.xticks(rotation=45)

# Ajout des titres et labels
plt.title("Nuage de points: Distribution de la durée d'ajustement")
plt.xlabel("Sujet")
plt.ylabel("TAju.ms")

# Affichage de la légende
plt.legend(title="Sexe")

# Affichage du graphe
plt.show()
No description has been provided for this image

Graphe Age et vitesse de pas

In [ ]:
# Initialisation du graphique
plt.figure(figsize=(8, 6))

# Création du scatter plot
sns.scatterplot(x="Age", y="Vpic_load_AP.ms", data=df, color="black")

# Ajout d'une ligne de tendance (moyenne mobile)
sns.regplot(x="Age", y="Vpic_load_AP.ms", data=df, scatter=False, color="blue", lowess=True)

# Ajout des titres et labels
plt.title("Vitesse du Pas en Fonction de l'Âge")
plt.xlabel("Âge (années)")
plt.ylabel("Vitesse du Pas (m/s)")

# Affichage du graphe
plt.show()
No description has been provided for this image

On peut dire que malgré certains cas;on observe une correlation positive entre l’age et la vitesse du pas; ce qui est évident car de plus on grandit; de plus la vitesse du pas doit augmente jusqu’à ne plus s’en rendre compte de tous ces nombreux mécanismes que nécessite la marche. On peut étudier la distribution des durées des phases(chargement et déchargement) en fonction du sexe

In [ ]:
# Filtering the data for Sexe 1 and 2
filtered_data = df[df['Sexe'].isin([1, 2])]

# Calculating mean durations for TLoad.ms and TUnload.ms by Sexe
mean_durations = filtered_data.groupby('Sexe')[['TLoad.ms', 'TUnload.ms']].mean().reset_index()

# Melting the dataframe for easier plotting
mean_durations_melted = mean_durations.melt(id_vars='Sexe', value_vars=['TLoad.ms', 'TUnload.ms'], var_name='Phase', value_name='Mean Duration (ms)')

# Creating a clustered bar graph
plt.figure(figsize=(10, 6))
sns.barplot(data=mean_durations_melted, x='Phase', y='Mean Duration (ms)', hue='Sexe')
plt.title('Mean Durations of TLoad.ms and TUnload.ms by Sexe')
plt.xlabel('Phase')
plt.ylabel('Mean Duration (ms)')
plt.legend(title='Sexe')
plt.tight_layout()

# Show the plot
plt.show()
No description has been provided for this image

On remarque que la durée de la phase de chargement est distribuée presque uniformément pour les deux sexes alors que pour la phase de déchargement;les enfants de sexe 1 prennent moins de temps pour évaluer et se préparer avant de commencer à marcher.

In [ ]:
# Création des subplots pour affichage côte à côte
fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Premier graphique
sns.scatterplot(
    x='CoP_tot_AP.Long', y='MOS_AP_FOcr.Long',
    size='BOS_AP_Init.m', alpha=0.7, data=df, ax=axes[0]
)
axes[0].set_title("Écart entre le CoM et le CoP en f(x) du CoP")
axes[0].set_xlabel("CoP TOT")
axes[0].set_ylabel("Écart entre")

# Deuxième graphique
sns.scatterplot(
    x='CoP_tot_ML.Larg', y='MOS_ML_FOcr.Larg',
    size='BOS_ML_Init.m', alpha=0.7, data=df, ax=axes[1]
)
axes[1].set_title("MOD_ML vs CoP_ML")
axes[1].set_xlabel("CoP ML")
axes[1].set_ylabel("MOD ML")

# Ajustement automatique de la légende
plt.tight_layout()
plt.show()
No description has been provided for this image

3. Effet de l’âge¶

Analyse des variables pertinentes

a. Nuage de points (Scatterplot)

Objectif : Visualiser la relation entre l'âge et une variable numérique.

In [ ]:
# Nuage de points : Âge vs TUnload.ms
plt.figure(figsize=(8, 6))
sns.scatterplot(x='Age', y='BOS_AP_Init.m', data=df)
plt.title("Nuage de points : Âge vs BOS_AP_Init.m	")
plt.xlabel("Âge")
plt.ylabel("BOS_AP_Init (ms)")
plt.show()
/usr/local/lib/python3.11/dist-packages/IPython/core/pylabtools.py:151: UserWarning: Glyph 9 (	) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
No description has been provided for this image
In [ ]:
correlation_age = correlation_matrix['Age'].sort_values(ascending=False)
correlation_age
Out[ ]:
Age
Age 1.000000
Height 0.794803
MIG 0.754120
MID 0.749922
BOS_AP_Init.m 0.715142
Weight 0.648591
Poignet 0.432212
Vpic_load_AP.ms 0.411568
CoP_load_ML.Larg 0.347639
Epaule 0.333151
Vpic_load_ML.ms 0.321339
Coude 0.291046
Main 0.262119
CoP_tot_AP.Long 0.213706
CoP_tot_ML.Larg 0.210177
MOS_ML_FOcr.Larg 0.172981
CoP_loadAP.Long 0.134787
TUnload.ms 0.129448
Sexe 0.063498
CoP_unload_ML.Larg 0.058754
TExe.ms 0.029349
TPas.ms 0.028914
TAju.ms 0.011044
MOS_AP_FOcr.Long -0.005848
Vpic_unload_ML.ms -0.037359
BOS_ML_Init.m -0.054450
TLoad.ms -0.112533

L'âge est plus lié à : Height (0.79), MIG (0.75), MID(0.749), BOS_AP_Init.m(0.71), Weight(0.64)

Faisons donc un pairplot entre l'Age et ces variables

In [ ]:
# Sélectionner les colonnes pertinentes
colonnes = ['Age', 'Height', 'MIG', 'MID', 'BOS_AP_Init.m', 'Weight']
sns.pairplot(df[colonnes])
plt.show()
No description has been provided for this image
In [ ]:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Sélectionner les colonnes pertinentes
colonnes = ['Age', 'Height', 'MIG', 'MID', 'BOS_AP_Init.m', 'Weight']
df_filtered = df[colonnes + ['Sexe']]  # Ajouter la colonne Sexe

# Définir une palette de couleurs pour distinguer les sexes
palette = {1: 'skyblue', 2: 'pink'}  # 1 = Garçon, 2 = Fille

# Créer le pairplot avec couleur et régression
pairplot = sns.pairplot(df_filtered, hue="Sexe", palette=palette, diag_kind="kde", kind="reg")

# Ajouter les coefficients de corrélation sur les graphes
for i, j in zip(*np.triu_indices_from(pairplot.axes, k=1)):  # Parcourt la moitié supérieure de la matrice
    corr = np.corrcoef(df_filtered[colonnes[i]], df_filtered[colonnes[j]])[0, 1]
    pairplot.axes[i, j].annotate(f'r = {corr:.2f}', xy=(0.5, 0.9), xycoords='axes fraction', ha='center', fontsize=10, color='black')

plt.show()
No description has been provided for this image
In [ ]:
# Supprimer les 8 dernières colonnes
df_reduit = df.iloc[:, 2:-8]
numeric_df_r = df_reduit.select_dtypes(include=['float64', 'int64'])
In [ ]:
# Calculer la matrice de corrélation
matrix_r = numeric_df_r.corr(method='pearson')  # ou 'spearman' si nécessaire

# Visualiser la matrice de corrélation avec heatmap de Seaborn
plt.figure(figsize=(10, 8))  # Ajuster la taille si nécessaire
sns.heatmap(matrix_r, annot=False, cmap='coolwarm', fmt=".2f", linewidths=.5)
plt.title('Matrice de Corrélation')
plt.show()
No description has been provided for this image

D’après la matrice de correlation, on constate que la variable “BOS_AP_Init.m” (Base de support_longueur_axe AP) est la plus pertinente par rapport à l’âge Question qu’on se pose alors : Comment l’âge influence-t-il la longuer de la base de support?

Variable groupe d'âge en 2 groupes

In [ ]:
# Créer la nouvelle variable "groupe_age2"
def categoriser_age(age):
  if 6 <= age <= 8.9:
    return "6-8 ans"
  elif 9 <= age <= 12:
    return "9-11 ans"
  else:
    return None  # Ou une autre catégorie si vous avez d'autres âges

df['groupe_age2'] = df['Age'].apply(categoriser_age)

# Afficher le DataFrame mis à jour
df.head()
Out[ ]:
GROUPE Sujet Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long ... MOS_ML_FOcr.Larg Weight Height Epaule Coude Poignet Main MID MIG groupe_age2
0 TD TD1 10.90 2 517 475 992 366 151 0.032708 ... -0.019617 25.3 131.0 75 57 49 25 63.0 63.0 9-11 ans
1 TD TD2 9.20 1 465 389 854 245 220 0.069070 ... -0.046824 33.0 136.0 87 70 50 23 70.0 70.0 9-11 ans
2 TD TD3 10.10 2 545 541 1086 215 330 0.034305 ... 0.085539 30.6 138.0 82 57 45 26 72.5 72.0 9-11 ans
3 TD TD4 10.05 1 471 201 672 273 198 0.014398 ... 0.153718 31.5 134.0 70 57 44 20 71.0 71.0 9-11 ans
4 TD TD5 6.10 1 444 201 645 226 218 0.051200 ... -0.143763 29.0 130.0 82 64 51 29 64.0 64.0 6-8 ans

5 rows × 30 columns

In [ ]:
# Liste des colonnes d'intérêt
colonnes_initiation_marche = [
    'TAju.ms', 'TExe.ms', 'TPas.ms', 'TLoad.ms', 'TUnload.ms',
    'CoP_tot_AP.Long', 'CoP_tot_ML.Larg', 'CoP_loadAP.Long',
    'CoP_load_ML.Larg', 'CoP_unload_ML.Larg', 'Vpic_load_AP.ms',
    'Vpic_load_ML.ms', 'Vpic_unload_ML.ms', 'BOS_AP_Init.m',
    'BOS_ML_Init.m', 'MOS_AP_FOcr.Long', 'MOS_ML_FOcr.Larg'
]

# Boucle sur chaque variable pour créer un barplot
for colonne in colonnes_initiation_marche:
    plt.figure(figsize=(8, 6))

    # Calculer les moyennes de la variable pour chaque groupe d'âge
    moyennes_par_groupe = df.groupby('groupe_age2')[colonne].mean().reset_index()

    # Création du bar plot
    sns.barplot(x='groupe_age2', y=colonne, hue='groupe_age2', data=moyennes_par_groupe)
    plt.title(f'Moyenne de {colonne} par groupe d\'âge')
    plt.xlabel('Groupe d\'âge')
    plt.ylabel(f'Moyenne de {colonne}')

    # Afficher le graphique
    plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
# Bar plot groupé (exemple avec les moyennes)

# Calculer les moyennes de BOS_AP_Init.m pour chaque groupe d'âge
moyennes_bos_par_groupe = df.groupby('groupe_age2')['BOS_AP_Init.m'].mean().reset_index()

# Créer le bar plot groupé
plt.figure(figsize=(8, 6))
sns.barplot(x='groupe_age2', y='BOS_AP_Init.m',hue='groupe_age2', data=moyennes_bos_par_groupe)
plt.title('Moyenne de BOS_AP_Init.m par groupe d\'âge')
plt.xlabel('Groupe d\'âge')
plt.ylabel('Moyenne de BOS_AP_Init.m')
plt.show()
No description has been provided for this image

On remarque qu’en moyenne les enfants qui ont entre 9 et 11 ans affichent une longue base de support que ceux ayant entre 6 et 8 ans. Pour pouvoir valider ou pas cette hypothèse, on va utiliser le test de Student pour comparer les moyennes de ces deux groupes. Est ce que les conditions sont satisfaites pour appliquer le test ?

Est ce que les deux groupes suivent une loi normale ?

Vérifier la normalité de chaque variable pour les deux groupes d’âge à l’aide de Q-Q plots (Quantile-Quantile plots)

In [ ]:
from scipy import stats # Import the stats module

# Extraire les groupes d'âge uniques
groupes_age = df['groupe_age2'].unique()

# Vérifier si au moins deux groupes existent
if len(groupes_age) >= 2:
    for colonne in colonnes_initiation_marche:  # Boucle sur chaque variable
        # Créer la figure pour les deux groupes
        fig, axes = plt.subplots(1, 2, figsize=(10, 5))

        for i in range(2):  # Boucle sur les deux premiers groupes d'âge
            groupe_actuel = df[df['groupe_age2'] == groupes_age[i]]

            # Créer le Q-Q plot pour la variable actuelle
            stats.probplot(groupe_actuel[colonne], dist="norm", plot=axes[i])

            # Ajouter le titre
            axes[i].set_title(f"Q-Q plot de {colonne} pour {i+1}ème groupe d'âge")

        # Ajuster l'espacement et afficher
        plt.tight_layout()
        plt.show()
else:
    print("Il n'y a pas au moins deux groupes d'âge dans le DataFrame.")
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Focus sur BOS_AP_Init.m

In [ ]:
import scipy.stats as stats

# Extraire les groupes d'âge uniques
groupes_age = df['groupe_age2'].unique()

# Vérifier si au moins deux groupes d'âge existent
if len(groupes_age) >= 2:
    # Créer la figure et les axes pour les deux graphiques
    fig, axes = plt.subplots(1, 2, figsize=(10, 5))

    # Itérer sur les deux premiers groupes d'âge
    for i in range(2):
        # Filtrer pour obtenir le groupe d'âge actuel
        groupe_actuel = df[df['groupe_age2'] == groupes_age[i]]

        # Créer le Q-Q plot
        stats.probplot(groupe_actuel['BOS_AP_Init.m'], dist="norm", plot=axes[i])

        # Ajouter le titre
        axes[i].set_title(f"Distribution de BOS_AP_Init.m pour le {i+1}ème groupe d'âge")

    # Ajuster l'espacement entre les graphiques
    plt.tight_layout()

    # Afficher les graphiques
    plt.show()
else:
    print("Il n'y a pas au moins deux groupes d'âge dans le DataFrame.")
No description has been provided for this image

1. Choix du test

Conditions d'application

Test t de Student : Utilisé pour comparer les moyennes de deux groupes indépendants.

Conditions :

  • Les données doivent suivre une distribution normale dans chaque groupe.

  • Les variances des deux groupes doivent être égales (homoscédasticité).

Test de Mann-Whitney (test non paramétrique) : Utilisé lorsque les conditions du test t ne sont pas remplies.

Conditions :

  • Les données ne suivent pas une distribution normale.

  • Les variances ne sont pas égales.

a.Vérification de la normalité (test de Shapiro-Wilk) Le test de Shapiro-Wilk permet de vérifier si les données suivent une distribution normale.

  • Si p-value > 0.05, les données suivent une distribution normale.
  • Si p-value <= 0.05, les données ne suivent pas une distribution normale.

Toutes les variables

In [ ]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import shapiro, levene, ttest_ind, mannwhitneyu

# Stocker les résultats
results_list = []

# Boucle sur chaque variable
for colonne in colonnes_initiation_marche:
    print(f"\n🔹 Analyse pour {colonne}")

    # Séparer les groupes d'âge
    group_6_8 = df[df['groupe_age2'] == '6-8 ans'][colonne].dropna()
    group_9_11 = df[df['groupe_age2'] == '9-11 ans'][colonne].dropna()

    # Vérification de la normalité (Shapiro-Wilk)
    stat_6_8, p_6_8 = shapiro(group_6_8)
    stat_9_11, p_9_11 = shapiro(group_9_11)

    print(f"  ➤ Shapiro-Wilk 6-8 ans : p-value = {p_6_8:.4f}")
    print(f"  ➤ Shapiro-Wilk 9-11 ans : p-value = {p_9_11:.4f}")

    # Vérification de l'égalité des variances (Levene)
    stat_levene, p_levene = levene(group_6_8, group_9_11)
    print(f"  ➤ Test de Levene : p-value = {p_levene:.4f}")

    # Choix du test en fonction des conditions
    if p_6_8 > 0.05 and p_9_11 > 0.05 and p_levene > 0.05:
        # Test t de Student
        stat_test, p_value = ttest_ind(group_6_8, group_9_11)
        test_name = "Test t de Student"
    else:
        # Test de Mann-Whitney
        stat_test, p_value = mannwhitneyu(group_6_8, group_9_11)
        test_name = "Test de Mann-Whitney"

    print(f"  ➤ {test_name} : p-value = {p_value:.4f}")

    # Stocker les résultats
    results_list.append({
        'Variable': colonne,
        'Test': test_name,
        'Statistique': stat_test,
        'p-value': p_value
    })

    # Affichage des Boxplots
    plt.figure(figsize=(8, 6))
    sns.boxplot(x='groupe_age2', y=colonne, hue = "groupe_age2",data=df)
    plt.title(f"Comparaison de {colonne} entre 6-8 ans et 9-11 ans")
    plt.xlabel("Groupe d'âge")
    plt.ylabel(colonne)
    plt.show()

    # Affichage des Violin plots
    plt.figure(figsize=(8, 6))
    sns.violinplot(x='groupe_age2', y=colonne, hue="groupe_age2", data=df)
    plt.title(f"Comparaison de {colonne} entre 6-8 ans et 9-11 ans")
    plt.xlabel("Groupe d'âge")
    plt.ylabel(colonne)
    plt.show()

# Affichage des résultats sous forme de DataFrame
results_df = pd.DataFrame(results_list)
print("\n📊 Résumé des résultats :")
print(results_df)
🔹 Analyse pour TAju.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.6793
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.0457
  ➤ Test de Levene : p-value = 0.2394
  ➤ Test de Mann-Whitney : p-value = 0.6033
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TExe.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.0079
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.0008
  ➤ Test de Levene : p-value = 0.9528
  ➤ Test de Mann-Whitney : p-value = 0.4843
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TPas.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.1229
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.2924
  ➤ Test de Levene : p-value = 0.7367
  ➤ Test t de Student : p-value = 0.6437
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TLoad.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.8472
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.5852
  ➤ Test de Levene : p-value = 0.9159
  ➤ Test t de Student : p-value = 0.2228
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TUnload.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.7992
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.3022
  ➤ Test de Levene : p-value = 0.6059
  ➤ Test t de Student : p-value = 0.5058
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_tot_AP.Long
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.9677
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.8908
  ➤ Test de Levene : p-value = 0.0758
  ➤ Test t de Student : p-value = 0.1266
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_tot_ML.Larg
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.6436
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.7650
  ➤ Test de Levene : p-value = 0.1610
  ➤ Test t de Student : p-value = 0.5421
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_loadAP.Long
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.2239
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.0381
  ➤ Test de Levene : p-value = 0.1767
  ➤ Test de Mann-Whitney : p-value = 0.4176
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_load_ML.Larg
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.1175
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.7269
  ➤ Test de Levene : p-value = 0.1692
  ➤ Test t de Student : p-value = 0.0703
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_unload_ML.Larg
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.1855
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.3292
  ➤ Test de Levene : p-value = 0.4953
  ➤ Test t de Student : p-value = 0.7407
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_load_AP.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.1007
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.0589
  ➤ Test de Levene : p-value = 0.4548
  ➤ Test t de Student : p-value = 0.0144
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_load_ML.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.0600
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.9401
  ➤ Test de Levene : p-value = 0.5612
  ➤ Test t de Student : p-value = 0.0790
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_unload_ML.ms
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.4097
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.8638
  ➤ Test de Levene : p-value = 0.8987
  ➤ Test t de Student : p-value = 0.8260
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour BOS_AP_Init.m
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.6674
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.9612
  ➤ Test de Levene : p-value = 0.3990
  ➤ Test t de Student : p-value = 0.0001
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour BOS_ML_Init.m
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.2411
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.8473
  ➤ Test de Levene : p-value = 0.9648
  ➤ Test t de Student : p-value = 0.7109
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour MOS_AP_FOcr.Long
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.6606
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.4117
  ➤ Test de Levene : p-value = 0.5845
  ➤ Test t de Student : p-value = 0.8422
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour MOS_ML_FOcr.Larg
  ➤ Shapiro-Wilk 6-8 ans : p-value = 0.9142
  ➤ Shapiro-Wilk 9-11 ans : p-value = 0.9313
  ➤ Test de Levene : p-value = 0.3852
  ➤ Test t de Student : p-value = 0.3811
No description has been provided for this image
No description has been provided for this image
📊 Résumé des résultats :
              Variable                  Test  Statistique   p-value
0              TAju.ms  Test de Mann-Whitney   125.000000  0.603280
1              TExe.ms  Test de Mann-Whitney   129.000000  0.484336
2              TPas.ms     Test t de Student     0.467533  0.643737
3             TLoad.ms     Test t de Student     1.246664  0.222850
4           TUnload.ms     Test t de Student    -0.674123  0.505761
5      CoP_tot_AP.Long     Test t de Student    -1.574538  0.126596
6      CoP_tot_ML.Larg     Test t de Student    -0.617258  0.542052
7      CoP_loadAP.Long  Test de Mann-Whitney    92.000000  0.417581
8     CoP_load_ML.Larg     Test t de Student    -1.881514  0.070337
9   CoP_unload_ML.Larg     Test t de Student     0.334270  0.740667
10     Vpic_load_AP.ms     Test t de Student    -2.608261  0.014435
11     Vpic_load_ML.ms     Test t de Student    -1.822849  0.079022
12   Vpic_unload_ML.ms     Test t de Student     0.221876  0.826020
13       BOS_AP_Init.m     Test t de Student    -4.686575  0.000065
14       BOS_ML_Init.m     Test t de Student     0.374394  0.710932
15    MOS_AP_FOcr.Long     Test t de Student    -0.200908  0.842223
16    MOS_ML_FOcr.Larg     Test t de Student    -0.889947  0.381077

Résumé des résultats sous forme de tableau

In [ ]:
# Résumé des résultats sous forme de tableau
results = {
    'Variable': ['TAju.ms', 'TExe.ms', 'TPas.ms', 'TLoad.ms', 'TUnload.ms',
                 'CoP_tot_AP.Long', 'CoP_tot_ML.Larg', 'CoP_loadAP.Long', 'CoP_load_ML.Larg',
                 'CoP_unload_ML.Larg', 'Vpic_load_AP.ms', 'Vpic_load_ML.ms', 'Vpic_unload_ML.ms',
                 'BOS_AP_Init.m', 'BOS_ML_Init.m', 'MOS_AP_FOcr.Long', 'MOS_ML_FOcr.Larg'],
    'Test': ['Mann-Whitney', 'Mann-Whitney', 'Student', 'Student', 'Student',
             'Student', 'Student', 'Mann-Whitney', 'Student', 'Student',
             'Student', 'Student', 'Student', 'Student', 'Student', 'Student', 'Student'],
    'p-value': [0.603, 0.484, 0.644, 0.223, 0.506, 0.127, 0.542, 0.418, 0.070,
                0.741, 0.014, 0.079, 0.826, 0.000065, 0.711, 0.842, 0.381]
}

df_results = pd.DataFrame(results)

# Ajouter une colonne pour l'interprétation
df_results['Significatif'] = df_results['p-value'] < 0.05
print(df_results)
              Variable          Test   p-value  Significatif
0              TAju.ms  Mann-Whitney  0.603000         False
1              TExe.ms  Mann-Whitney  0.484000         False
2              TPas.ms       Student  0.644000         False
3             TLoad.ms       Student  0.223000         False
4           TUnload.ms       Student  0.506000         False
5      CoP_tot_AP.Long       Student  0.127000         False
6      CoP_tot_ML.Larg       Student  0.542000         False
7      CoP_loadAP.Long  Mann-Whitney  0.418000         False
8     CoP_load_ML.Larg       Student  0.070000         False
9   CoP_unload_ML.Larg       Student  0.741000         False
10     Vpic_load_AP.ms       Student  0.014000          True
11     Vpic_load_ML.ms       Student  0.079000         False
12   Vpic_unload_ML.ms       Student  0.826000         False
13       BOS_AP_Init.m       Student  0.000065          True
14       BOS_ML_Init.m       Student  0.711000         False
15    MOS_AP_FOcr.Long       Student  0.842000         False
16    MOS_ML_FOcr.Larg       Student  0.381000         False

Boxplot pour visualiser la différence entre les groupes avec que les variables significatives

In [ ]:
# Variables significatives à visualiser
variables_significatives = ["Vpic_load_AP.ms", "BOS_AP_Init.m"]

# Boucle pour afficher un boxplot pour chaque variable significative
for var in variables_significatives:
    plt.figure(figsize=(8, 6))
    sns.boxplot(x="groupe_age2", y=var, hue="groupe_age2",data=df)
    plt.title(f"Comparaison de {var} entre 6-8 ans et 9-11 ans")
    plt.xlabel("Groupe d'âge")
    plt.ylabel(var)
    plt.show()
No description has been provided for this image
No description has been provided for this image

🎯 Conclusion

1️⃣ Le test choisi était correct :

Test t de Student si les conditions étaient respectées. Test de Mann-Whitney sinon.

2️⃣ Les variables importantes à retenir :

  • ✅ Vpic_load_AP.ms (p = 0.0144)

  • ✅ BOS_AP_Init.m (p = 0.000065)

3️⃣ Interprétation des résultats :

Vpic_load_AP.ms → Montre une différence significative entre les groupes d'âge.

BOS_AP_Init.m → Fortement significatif → Cette variable varie fortement selon l'âge.

Autres variables → Pas de différence significative entre les groupes.

In [ ]:
from scipy.stats import shapiro

# Vérification de la normalité pour chaque groupe
group_6_8 = df[df['groupe_age2'] == '6-8 ans']['BOS_AP_Init.m']
group_9_11 = df[df['groupe_age2'] == '9-11 ans']['BOS_AP_Init.m']

# Test de Shapiro-Wilk
stat_6_8, p_6_8 = shapiro(group_6_8)
stat_9_11, p_9_11 = shapiro(group_9_11)

print(f"Shapiro-Wilk pour 6-8 ans : p-value = {p_6_8}")
print(f"Shapiro-Wilk pour 9-11 ans : p-value = {p_9_11}")
Shapiro-Wilk pour 6-8 ans : p-value = 0.6674276385275026
Shapiro-Wilk pour 9-11 ans : p-value = 0.9612253627146897

Les p-value pour les deux groupes est supérieur à 0.05 alors les données suivent une distribution normale.

Shapiro-Wilk pour 6-8 ans : p-value = 0.66 > 0.05 Shapiro-Wilk pour 9-11 ans :** p-value = 0.96 > 0.05**

b. Vérification de l'égalité des variances (test de Levene) Le test de Levene permet de vérifier si les variances des deux groupes sont égales.

  • Si p-value > 0.05, les variances sont égales.

  • Si p-value <= 0.05, les variances ne sont pas égales.

In [ ]:
from scipy.stats import levene

# Test de Levene
stat, p_levene = levene(group_6_8, group_9_11)
print(f"Test de Levene : p-value = {p_levene}")
Test de Levene : p-value = 0.39896179750582994

On obtient comme p-value = 0.39 > 0.05, alors les variances sont égales.

Etant donné que les données suivent une distribution normale et que les variances sont égales, nous pouvons utiliser le test t de Student.

In [ ]:
from scipy.stats import ttest_ind

# Test t de Student
t_stat, p_value = ttest_ind(group_6_8, group_9_11)
print(f"Test t de Student : t = {t_stat}, p-value = {p_value}")
Test t de Student : t = -4.686574811481989, p-value = 6.532247616310009e-05

L'analyse du test t de Student repose sur l'interprétation de la valeur de t et de la p-value. Voici comment comprendre ton résultat :

1. Valeur de t :

  • t = -4.69 (environ)
  • Une valeur t négative signifie que la moyenne du premier groupe est inférieure à celle du second groupe.
  • Plus t est éloigné de 0, plus la différence entre les groupes est grande.

2. p-value :

  • p-value = 6.53 × 10⁻⁵ ≈ 0.0000653
  • Cette valeur est très petite (bien inférieure à 0.05), indiquant une différence statistiquement significative.
  • Si le seuil de signification (alpha) est de 0.05 ou 0.01, on rejette l'hypothèse nulle (H₀), qui suppose qu'il n'y a pas de différence entre les moyennes des deux groupes.

3. Conclusion :

  • Il y a une différence significative entre les deux groupes.
  • La moyenne du premier groupe est significativement plus faible que celle du second groupe.

Présentation des résultats

a. Tableau des résultats texte en gras Vous pouvez résumer les résultats du test dans un tableau.

In [ ]:
# Créer un tableau de résultats
results = pd.DataFrame({
    'Test': ['Test t de Student' if p_6_8 > 0.05 and p_9_11 > 0.05 and p_levene > 0.05 else 'Test de Mann-Whitney'],
    'Statistique': [t_stat if p_6_8 > 0.05 and p_9_11 > 0.05 and p_levene > 0.05 else u_stat],
    'p-value': [p_value]
})

print(results)
                Test  Statistique   p-value
0  Test t de Student    -4.686575  0.000065

b. Graphique des résultats

Vous pouvez visualiser les distributions des deux groupes à l'aide d'un boxplot ou d'un violin plot.

In [ ]:
# 2. Box plot

plt.figure(figsize=(8, 6))
sns.boxplot(x='groupe_age2', y='BOS_AP_Init.m',hue='groupe_age2', data=df)
plt.title('Distribution de BOS_AP_Init.m par groupe d\'âge')
plt.xlabel('Groupe d\'âge')
plt.ylabel('BOS_AP_Init.m')
plt.show()

#3. Graphique en violon

plt.figure(figsize=(8, 6))
sns.violinplot(x='groupe_age2', y='BOS_AP_Init.m',hue='groupe_age2', data=df)
plt.title("Graphique en violon : BOS_AP_Init.m par groupe d'âge")
plt.xlabel("Groupe d'âge")
plt.ylabel("BOS_AP_Init.m")
plt.show()
No description has been provided for this image
No description has been provided for this image

Graphiques :

Le boxplot et le violin plot vous permettent de visualiser les distributions des deux groupes et de confirmer visuellement les résultats du test.

Conclusion:

Nous remarquons que la p-value est très faible(inférieure à 0.05);nous rejetons l’hypothèse nulle et nous acceptons l’hypothèse alternative qui suggère une différence significative entre les deux groupes d’âge. L’intervale de confiance suggère qu’à 95% de chances;la différence réelle des moyennes entre les deux groupes se trouve entre -0.028 et -0.011; ce qui soutient encore qu’il existe une différence significative entre ces deux groupes. La différence entre ces moyennes est de 0.O19;ce qui est statistiquement significatif. En plus; les résultats de ce test sont en adéquation avec le boxplot; nous concluons que le groupe d’âge plus âgé montre des valeurs moyennes plus élevées que le groupe plus jeune. ___________________________________________________________

1. Choix du test

Conditions d'application ANOVA (Analyse de Variance) : Utilisé pour comparer les moyennes de trois groupes ou plus.

Conditions :

  • Les données doivent suivre une distribution normale dans chaque groupe.

  • Les variances des groupes doivent être égales (homoscédasticité).

Test de Kruskal-Wallis (test non paramétrique) : Utilisé lorsque les conditions de l'ANOVA ne sont pas remplies.

Conditions :

  • Les données ne suivent pas une distribution normale.

  • Les variances ne sont pas égales.

2. Vérification des conditions

a. Vérification de la normalité (test de Shapiro-Wilk)

Le test de Shapiro-Wilk permet de vérifier si les données suivent une distribution normale.

In [ ]:
# Créer la nouvelle variable "groupe_age3" pour les 3 groupes d'âge
def n_categoriser_age(age):
  if 6 <= age <= 7.9:
    return "6-7 ans"
  elif 8 <= age <= 9.9:
    return "8-9 ans"
  elif 10 <= age <= 12:
    return "10-11 ans"
  else:
    return None  # Ou une autre catégorie si vous avez d'autres âges

df['groupe_age3'] = df['Age'].apply(n_categoriser_age)

# Afficher le DataFrame mis à jour
df.head()
Out[ ]:
GROUPE Sujet Age Sexe TAju.ms TExe.ms TPas.ms TLoad.ms TUnload.ms CoP_tot_AP.Long ... Weight Height Epaule Coude Poignet Main MID MIG groupe_age2 groupe_age3
0 TD TD1 10.90 2 517 475 992 366 151 0.032708 ... 25.3 131.0 75 57 49 25 63.0 63.0 9-11 ans 10-11 ans
1 TD TD2 9.20 1 465 389 854 245 220 0.069070 ... 33.0 136.0 87 70 50 23 70.0 70.0 9-11 ans 8-9 ans
2 TD TD3 10.10 2 545 541 1086 215 330 0.034305 ... 30.6 138.0 82 57 45 26 72.5 72.0 9-11 ans 10-11 ans
3 TD TD4 10.05 1 471 201 672 273 198 0.014398 ... 31.5 134.0 70 57 44 20 71.0 71.0 9-11 ans 10-11 ans
4 TD TD5 6.10 1 444 201 645 226 218 0.051200 ... 29.0 130.0 82 64 51 29 64.0 64.0 6-8 ans 6-7 ans

5 rows × 31 columns

Toutes les variables

In [ ]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import shapiro, levene, f_oneway, kruskal

# Stocker les résultats
n_results_list = []

# Boucle sur chaque variable
for colonne in colonnes_initiation_marche:
    print(f"\n🔹 Analyse pour {colonne}")

    # Séparer les groupes d'âge
    group_6_7 = df[df['groupe_age3'] == '6-7 ans'][colonne].dropna()
    group_8_9 = df[df['groupe_age3'] == '8-9 ans'][colonne].dropna()
    group_10_11 = df[df['groupe_age3'] == '10-11 ans'][colonne].dropna()

    # Vérification de la normalité (Shapiro-Wilk)
    stat_6_7, p_6_7 = shapiro(group_6_7)
    stat_8_9, p_8_9 = shapiro(group_8_9)
    stat_10_11, p_10_11 = shapiro(group_10_11)

    print(f"  ➤ Shapiro-Wilk 6-7 ans : p-value = {p_6_7:.4f}")
    print(f"  ➤ Shapiro-Wilk 8-9 ans : p-value = {p_8_9:.4f}")
    print(f"  ➤ Shapiro-Wilk 10-11 ans : p-value = {p_10_11:.4f}")

    # Vérification de l'égalité des variances (Levene)
    stat_levene, p_levene = levene(group_6_7, group_8_9, group_10_11)
    print(f"  ➤ Test de Levene : p-value = {p_levene:.4f}")

    # Choix du test en fonction des conditions
    if p_6_7 > 0.05 and p_8_9 > 0.05 and p_10_11 > 0.05 and p_levene > 0.05:
        # ANOVA
        stat_test, p_value = f_oneway(group_6_7, group_8_9, group_10_11)
        test_name = "ANOVA"
    else:
        # Test de Kruskal-Wallis
        stat_test, p_value = kruskal(group_6_7, group_8_9, group_10_11)
        test_name = "Kruskal-Wallis"

    print(f"  ➤ {test_name} : p-value = {p_value:.4f}")

    # Stocker les résultats
    n_results_list.append({
        'Variable': colonne,
        'Test': test_name,
        'Statistique': stat_test,
        'p-value': p_value
    })

    # Générer Boxplot
    plt.figure(figsize=(8, 6))
    sns.boxplot(x="groupe_age3", y=colonne, hue="groupe_age3", data=df)
    plt.title(f"Comparaison de {colonne} entre 6-7 ans, 8-9 ans et 10-11 ans")
    plt.xlabel("Groupe d'âge")
    plt.ylabel(colonne)
    plt.show()

    # Générer Violin plot
    plt.figure(figsize=(8, 6))
    sns.violinplot(x="groupe_age3", y=colonne, hue="groupe_age3", data=df)
    plt.title(f"Comparaison de {colonne} entre 6-7 ans, 8-9 ans et 10-11 ans")
    plt.xlabel("Groupe d'âge")
    plt.ylabel(colonne)
    plt.show()

# Affichage des résultats sous forme de tableau
n_results_df = pd.DataFrame(n_results_list)
print("\n📊 Résumé des résultats :")
print(n_results_df)
🔹 Analyse pour TAju.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.3485
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5803
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.0309
  ➤ Test de Levene : p-value = 0.7692
  ➤ Kruskal-Wallis : p-value = 0.6635
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TExe.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.0020
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.1301
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.0000
  ➤ Test de Levene : p-value = 0.9405
  ➤ Kruskal-Wallis : p-value = 0.0622
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TPas.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.1564
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.2083
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.4589
  ➤ Test de Levene : p-value = 0.5875
  ➤ ANOVA : p-value = 0.7609
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TLoad.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.8830
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5607
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.7953
  ➤ Test de Levene : p-value = 0.8265
  ➤ ANOVA : p-value = 0.7482
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour TUnload.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.4075
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5720
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.3477
  ➤ Test de Levene : p-value = 0.4586
  ➤ ANOVA : p-value = 0.4119
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_tot_AP.Long
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.7845
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.8073
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.7997
  ➤ Test de Levene : p-value = 0.2006
  ➤ ANOVA : p-value = 0.7636
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_tot_ML.Larg
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.7296
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.9895
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.7406
  ➤ Test de Levene : p-value = 0.5484
  ➤ ANOVA : p-value = 0.2785
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_loadAP.Long
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.2404
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.1935
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.1955
  ➤ Test de Levene : p-value = 0.4384
  ➤ ANOVA : p-value = 0.6544
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_load_ML.Larg
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.1277
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.7529
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.7314
  ➤ Test de Levene : p-value = 0.3574
  ➤ ANOVA : p-value = 0.1945
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour CoP_unload_ML.Larg
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.2154
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5582
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.3753
  ➤ Test de Levene : p-value = 0.9818
  ➤ ANOVA : p-value = 0.3068
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_load_AP.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.0388
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.0985
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.4028
  ➤ Test de Levene : p-value = 0.9988
  ➤ Kruskal-Wallis : p-value = 0.0814
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_load_ML.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.0954
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.4006
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.8055
  ➤ Test de Levene : p-value = 0.5866
  ➤ ANOVA : p-value = 0.2527
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour Vpic_unload_ML.ms
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.4265
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5719
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.6362
  ➤ Test de Levene : p-value = 0.2913
  ➤ ANOVA : p-value = 0.8542
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour BOS_AP_Init.m
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.5793
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.2572
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.8937
  ➤ Test de Levene : p-value = 0.2094
  ➤ ANOVA : p-value = 0.0003
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour BOS_ML_Init.m
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.4443
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.2571
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.9458
  ➤ Test de Levene : p-value = 0.1384
  ➤ ANOVA : p-value = 0.6125
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour MOS_AP_FOcr.Long
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.5891
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.1647
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.1454
  ➤ Test de Levene : p-value = 0.2832
  ➤ ANOVA : p-value = 0.7579
No description has been provided for this image
No description has been provided for this image
🔹 Analyse pour MOS_ML_FOcr.Larg
  ➤ Shapiro-Wilk 6-7 ans : p-value = 0.9163
  ➤ Shapiro-Wilk 8-9 ans : p-value = 0.5196
  ➤ Shapiro-Wilk 10-11 ans : p-value = 0.8664
  ➤ Test de Levene : p-value = 0.0896
  ➤ ANOVA : p-value = 0.6184
No description has been provided for this image
No description has been provided for this image
📊 Résumé des résultats :
              Variable            Test  Statistique   p-value
0              TAju.ms  Kruskal-Wallis     0.820504  0.663483
1              TExe.ms  Kruskal-Wallis     5.555462  0.062179
2              TPas.ms           ANOVA     0.276009  0.760921
3             TLoad.ms           ANOVA     0.293245  0.748184
4           TUnload.ms           ANOVA     0.916685  0.411929
5      CoP_tot_AP.Long           ANOVA     0.272357  0.763650
6      CoP_tot_ML.Larg           ANOVA     1.340770  0.278512
7      CoP_loadAP.Long           ANOVA     0.430729  0.654424
8     CoP_load_ML.Larg           ANOVA     1.740893  0.194476
9   CoP_unload_ML.Larg           ANOVA     1.234761  0.306813
10     Vpic_load_AP.ms  Kruskal-Wallis     5.017580  0.081367
11     Vpic_load_ML.ms           ANOVA     1.448291  0.252651
12   Vpic_unload_ML.ms           ANOVA     0.158501  0.854210
13       BOS_AP_Init.m           ANOVA    11.414744  0.000255
14       BOS_ML_Init.m           ANOVA     0.499272  0.612467
15    MOS_AP_FOcr.Long           ANOVA     0.280035  0.757926
16    MOS_ML_FOcr.Larg           ANOVA     0.489296  0.618389

Tableau avec significativité

In [ ]:
n_df_results = pd.DataFrame(n_results_df)

# Ajouter une colonne pour l'interprétation
n_df_results['Significatif'] = n_df_results['p-value'] < 0.05
print(n_df_results)
              Variable            Test  Statistique   p-value  Significatif
0              TAju.ms  Kruskal-Wallis     0.820504  0.663483         False
1              TExe.ms  Kruskal-Wallis     5.555462  0.062179         False
2              TPas.ms           ANOVA     0.276009  0.760921         False
3             TLoad.ms           ANOVA     0.293245  0.748184         False
4           TUnload.ms           ANOVA     0.916685  0.411929         False
5      CoP_tot_AP.Long           ANOVA     0.272357  0.763650         False
6      CoP_tot_ML.Larg           ANOVA     1.340770  0.278512         False
7      CoP_loadAP.Long           ANOVA     0.430729  0.654424         False
8     CoP_load_ML.Larg           ANOVA     1.740893  0.194476         False
9   CoP_unload_ML.Larg           ANOVA     1.234761  0.306813         False
10     Vpic_load_AP.ms  Kruskal-Wallis     5.017580  0.081367         False
11     Vpic_load_ML.ms           ANOVA     1.448291  0.252651         False
12   Vpic_unload_ML.ms           ANOVA     0.158501  0.854210         False
13       BOS_AP_Init.m           ANOVA    11.414744  0.000255          True
14       BOS_ML_Init.m           ANOVA     0.499272  0.612467         False
15    MOS_AP_FOcr.Long           ANOVA     0.280035  0.757926         False
16    MOS_ML_FOcr.Larg           ANOVA     0.489296  0.618389         False

Visualisation de box plot et violon plot avec la seule variable pertinente BOS_AP_Init.m

In [ ]:
# Box plot

plt.figure(figsize=(8, 6))
sns.boxplot(x='groupe_age3', y='BOS_AP_Init.m',hue='groupe_age3', data=df)
plt.title('Distribution de BOS_AP_Init.m par groupe d\'âge')
plt.xlabel('Groupe d\'âge')
plt.ylabel('BOS_AP_Init.m')
plt.show()

# Graphique en violon

plt.figure(figsize=(8, 6))
sns.violinplot(x='groupe_age3', y='BOS_AP_Init.m',hue='groupe_age3', data=df)
plt.title("Graphique en violon : BOS_AP_Init.m par groupe d'âge")
plt.xlabel("Groupe d'âge")
plt.ylabel("BOS_AP_Init.m")
plt.show()
No description has been provided for this image
No description has been provided for this image

Le test ANOVA compare la variable BOS_AP_Init.m entre les trois groupes d'âge (6-7 ans, 8-9 ans, 10-11 ans). Voici comment interpréter les résultats :

1. Valeur de F

  • F = 11.41 (environ)
  • Cette valeur représente le rapport entre la variabilité entre les groupes et la variabilité à l'intérieur des groupes.
  • Plus F est élevé, plus la différence entre les moyennes des groupes est importante par rapport à la variabilité interne.

2. p-value

  • p = 0.000255 (environ 0.0003)
  • Cette valeur est très inférieure au seuil classique de 0.05 ou 0.01.
  • Cela signifie qu'on rejette l'hypothèse nulle (H₀), qui suppose que les trois groupes ont des moyennes identiques pour BOS_AP_Init.m.
  • Autrement dit, il existe une différence significative entre au moins deux des trois groupes.

3. Conclusion

  • L'âge influence significativement BOS_AP_Init.m.
  • Mais l’ANOVA ne dit pas entre quels groupes la différence est significative.

Pour aller plus loin, il faut faire un test post-hoc (comme Tukey HSD) pour identifier quels groupes sont significativement différents.

In [ ]:
from statsmodels.stats.multicomp import pairwise_tukeyhsd

# Appliquer le test de Tukey
tukey_results = pairwise_tukeyhsd(endog=df['BOS_AP_Init.m'], groups=df['groupe_age3'], alpha=0.05)

# Afficher les résultats
print(tukey_results)
  Multiple Comparison of Means - Tukey HSD, FWER=0.05   
========================================================
  group1   group2 meandiff p-adj   lower   upper  reject
--------------------------------------------------------
10-11 ans 6-7 ans  -0.0221 0.0002 -0.0338 -0.0105   True
10-11 ans 8-9 ans  -0.0078 0.3833 -0.0222  0.0066  False
  6-7 ans 8-9 ans   0.0143  0.045  0.0003  0.0283   True
--------------------------------------------------------

Synthèse des résultats

10-11 ans vs 6-7 ans :

  • Différence significative (p-adj = 0.0002).

  • Le groupe 10-11 ans a une moyenne significativement plus basse que le groupe 6-7 ans.

10-11 ans vs 8-9 ans :

  • Pas de différence significative (p-adj = 0.3833).

  • Les moyennes des groupes 10-11 ans et 8-9 ans sont similaires.

6-7 ans vs 8-9 ans :

  • Différence significative (p-adj = 0.045).

  • Le groupe 6-7 ans a une moyenne significativement plus élevée que le groupe 8-9 ans.

Visualisation des résultats du test de Tukey

Vous pouvez également visualiser les résultats du test de Tukey à l'aide d'un graphique :

In [ ]:
# Visualisation des résultats du test de Tukey
tukey_results.plot_simultaneous()
plt.title("Comparaison des groupes avec le test de Tukey")
plt.xlabel("Différence de moyennes")
plt.ylabel("Groupes")
plt.show()
No description has been provided for this image
In [ ]:
from scipy.stats import shapiro

# Vérification de la normalité pour chaque groupe
group_6_7 = df[df['groupe_age3'] == '6-7 ans']['BOS_AP_Init.m']
group_8_9 = df[df['groupe_age3'] == '8-9 ans']['BOS_AP_Init.m']
group_10_11 = df[df['groupe_age3'] == '10-11 ans']['BOS_AP_Init.m']

# Test de Shapiro-Wilk
stat_6_7, p_6_7 = shapiro(group_6_7)
stat_8_9, p_8_9 = shapiro(group_8_9)
stat_10_11, p_10_11 = shapiro(group_10_11)

print(f"Shapiro-Wilk pour 6-7 ans : p-value = {p_6_7}")
print(f"Shapiro-Wilk pour 8-9 ans : p-value = {p_8_9}")
print(f"Shapiro-Wilk pour 10-11 ans : p-value = {p_10_11}")
Shapiro-Wilk pour 6-7 ans : p-value = 0.5793156012318983
Shapiro-Wilk pour 8-9 ans : p-value = 0.2572245463069386
Shapiro-Wilk pour 10-11 ans : p-value = 0.8936550210267022

Conclusion

Différences significatives :

  • Il y a une différence significative entre les groupes 6-7 ans et 10-11 ans, ainsi qu'entre les groupes 6-7 ans et 8-9 ans.

  • Cela suggère que l'âge a un effet significatif sur la variable étudiée (par exemple, TUnload.ms), en particulier pour les plus jeunes enfants (6-7 ans) par rapport aux autres groupes.

Pas de différence significative :

Il n'y a pas de différence significative entre les groupes 8-9 ans et 10-11 ans.

3.3 : Approche Alternative pour Tester l'Effet de l'Âge : Méthodes et Résultats

Oui, il est tout à fait possible de tester l'effet de l'âge sans diviser les données en groupes discrets (comme 6-7 ans, 8-9 ans, etc.). La régression est une méthode couramment utilisée pour cela, mais il existe également d'autres approches. Voici une explication détaillée des différentes méthodes et pourquoi elles sont pertinentes, ainsi que des exemples de mise en œuvre en Python.

1. Pourquoi utiliser la régression ?

La régression est une méthode puissante pour étudier l'effet de l'âge sur une variable d'intérêt (par exemple, TUnload.ms) sans avoir à diviser les données en groupes. Voici pourquoi elle est appropriée :

a. Traitement de l'âge comme une variable continue

L'âge est une variable continue, et la régression permet de modéliser la relation entre l'âge et une autre variable sans perdre d'informations en créant des groupes artificiels.

Cela permet de capturer des tendances plus fines et non linéaires.

b. Flexibilité

La régression peut être linéaire ou non linéaire (par exemple, en ajoutant des termes polynomiaux ou en utilisant des splines).

Elle permet également de contrôler l'effet d'autres variables (par exemple, la taille ou le poids) pour éviter les biais.

c. Interprétabilité Les coefficients de régression fournissent une mesure quantitative de l'effet de l'âge sur la variable d'intérêt.

Vous pouvez également calculer des intervalles de confiance et des p-values pour évaluer la significativité des effets.


In [ ]:
import statsmodels.api as sm

# Boucle pour chaque variable dans la liste
for colonne in colonnes_initiation_marche:
    # Régression linéaire pour la colonne actuelle
    X = sm.add_constant(df['Age'])  # Ajouter une constante (intercept)
    y = df[colonne]  # Utiliser la colonne actuelle comme variable dépendante

    model = sm.OLS(y, X).fit()  # Ajuster le modèle
    print(f"Résultats de la régression pour {colonne}:")
    print(model.summary())  # Afficher les résultats de la régression

    # Vérifier si l'effet de l'âge est significatif
    p_value = model.pvalues['Age']
    if p_value < 0.05:  # Seuil de signification à 5%
        variables_significatives.append(colonne)
        print(f"L'effet de l'âge sur {colonne} est significatif (p-value: {p_value:.4f})")

    # Visualisation de la régression linéaire
    plt.figure(figsize=(8, 6))
    sns.regplot(x='Age', y=colonne, data=df, line_kws={'color': 'red'})
    plt.title(f"Régression linéaire : {colonne} en fonction de l'âge")
    plt.xlabel("Âge")
    plt.ylabel(f"{colonne} (ms)")
    plt.show()
Résultats de la régression pour TAju.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TAju.ms   R-squared:                       0.000
Model:                            OLS   Adj. R-squared:                 -0.036
Method:                 Least Squares   F-statistic:                  0.003415
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.954
Time:                        11:00:44   Log-Likelihood:                -179.42
No. Observations:                  30   AIC:                             362.8
Df Residuals:                      28   BIC:                             365.6
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        497.4655     94.175      5.282      0.000     304.556     690.375
Age            0.6274     10.735      0.058      0.954     -21.362      22.617
==============================================================================
Omnibus:                       10.324   Durbin-Watson:                   2.705
Prob(Omnibus):                  0.006   Jarque-Bera (JB):               15.849
Skew:                           0.599   Prob(JB):                     0.000362
Kurtosis:                       6.353   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour TExe.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TExe.ms   R-squared:                       0.001
Model:                            OLS   Adj. R-squared:                 -0.035
Method:                 Least Squares   F-statistic:                   0.02414
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.878
Time:                        11:00:44   Log-Likelihood:                -182.88
No. Observations:                  30   AIC:                             369.8
Df Residuals:                      28   BIC:                             372.6
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        272.0852    105.688      2.574      0.016      55.592     488.578
Age            1.8718     12.047      0.155      0.878     -22.806      26.549
==============================================================================
Omnibus:                        4.663   Durbin-Watson:                   1.527
Prob(Omnibus):                  0.097   Jarque-Bera (JB):                4.203
Skew:                           0.857   Prob(JB):                        0.122
Kurtosis:                       2.349   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour TPas.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TPas.ms   R-squared:                       0.001
Model:                            OLS   Adj. R-squared:                 -0.035
Method:                 Least Squares   F-statistic:                   0.02343
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.879
Time:                        11:00:44   Log-Likelihood:                -192.00
No. Observations:                  30   AIC:                             388.0
Df Residuals:                      28   BIC:                             390.8
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        769.5508    143.237      5.373      0.000     476.144    1062.958
Age            2.4991     16.327      0.153      0.879     -30.946      35.944
==============================================================================
Omnibus:                        0.788   Durbin-Watson:                   2.008
Prob(Omnibus):                  0.674   Jarque-Bera (JB):                0.779
Skew:                           0.162   Prob(JB):                        0.678
Kurtosis:                       2.280   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour TLoad.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:               TLoad.ms   R-squared:                       0.013
Model:                            OLS   Adj. R-squared:                 -0.023
Method:                 Least Squares   F-statistic:                    0.3591
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.554
Time:                        11:00:44   Log-Likelihood:                -173.53
No. Observations:                  30   AIC:                             351.1
Df Residuals:                      28   BIC:                             353.9
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        334.7122     77.388      4.325      0.000     176.191     493.234
Age           -5.2864      8.821     -0.599      0.554     -23.356      12.783
==============================================================================
Omnibus:                        1.702   Durbin-Watson:                   2.395
Prob(Omnibus):                  0.427   Jarque-Bera (JB):                1.077
Skew:                           0.464   Prob(JB):                        0.584
Kurtosis:                       3.027   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour TUnload.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:             TUnload.ms   R-squared:                       0.017
Model:                            OLS   Adj. R-squared:                 -0.018
Method:                 Least Squares   F-statistic:                    0.4772
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.495
Time:                        11:00:45   Log-Likelihood:                -172.63
No. Observations:                  30   AIC:                             349.3
Df Residuals:                      28   BIC:                             352.1
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const        162.7533     75.103      2.167      0.039       8.912     316.595
Age            5.9137      8.561      0.691      0.495     -11.622      23.450
==============================================================================
Omnibus:                        2.073   Durbin-Watson:                   2.649
Prob(Omnibus):                  0.355   Jarque-Bera (JB):                1.781
Skew:                           0.478   Prob(JB):                        0.410
Kurtosis:                       2.284   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour CoP_tot_AP.Long:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_tot_AP.Long   R-squared:                       0.046
Model:                            OLS   Adj. R-squared:                  0.012
Method:                 Least Squares   F-statistic:                     1.340
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.257
Time:                        11:00:45   Log-Likelihood:                 87.122
No. Observations:                  30   AIC:                            -170.2
Df Residuals:                      28   BIC:                            -167.4
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0263      0.013      2.014      0.054      -0.000       0.053
Age            0.0017      0.001      1.158      0.257      -0.001       0.005
==============================================================================
Omnibus:                        0.166   Durbin-Watson:                   1.897
Prob(Omnibus):                  0.920   Jarque-Bera (JB):                0.099
Skew:                           0.114   Prob(JB):                        0.952
Kurtosis:                       2.836   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour CoP_tot_ML.Larg:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_tot_ML.Larg   R-squared:                       0.044
Model:                            OLS   Adj. R-squared:                  0.010
Method:                 Least Squares   F-statistic:                     1.294
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.265
Time:                        11:00:45   Log-Likelihood:                 73.402
No. Observations:                  30   AIC:                            -142.8
Df Residuals:                      28   BIC:                            -140.0
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0905      0.021      4.391      0.000       0.048       0.133
Age            0.0027      0.002      1.138      0.265      -0.002       0.007
==============================================================================
Omnibus:                        0.566   Durbin-Watson:                   1.895
Prob(Omnibus):                  0.753   Jarque-Bera (JB):                0.670
Skew:                          -0.186   Prob(JB):                        0.715
Kurtosis:                       2.369   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour CoP_loadAP.Long:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_loadAP.Long   R-squared:                       0.018
Model:                            OLS   Adj. R-squared:                 -0.017
Method:                 Least Squares   F-statistic:                    0.5181
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.478
Time:                        11:00:46   Log-Likelihood:                 34.004
No. Observations:                  30   AIC:                            -64.01
Df Residuals:                      28   BIC:                            -61.21
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.1417      0.077      1.850      0.075      -0.015       0.299
Age            0.0063      0.009      0.720      0.478      -0.012       0.024
==============================================================================
Omnibus:                        2.274   Durbin-Watson:                   1.804
Prob(Omnibus):                  0.321   Jarque-Bera (JB):                2.017
Skew:                          -0.548   Prob(JB):                        0.365
Kurtosis:                       2.359   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour CoP_load_ML.Larg:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       CoP_load_ML.Larg   R-squared:                       0.121
Model:                            OLS   Adj. R-squared:                  0.089
Method:                 Least Squares   F-statistic:                     3.849
Date:                Wed, 05 Mar 2025   Prob (F-statistic):             0.0598
Time:                        11:00:46   Log-Likelihood:                 46.456
No. Observations:                  30   AIC:                            -88.91
Df Residuals:                      28   BIC:                            -86.11
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0688      0.051      1.360      0.185      -0.035       0.172
Age            0.0113      0.006      1.962      0.060      -0.000       0.023
==============================================================================
Omnibus:                        0.952   Durbin-Watson:                   1.709
Prob(Omnibus):                  0.621   Jarque-Bera (JB):                0.926
Skew:                           0.256   Prob(JB):                        0.629
Kurtosis:                       2.308   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour CoP_unload_ML.Larg:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:     CoP_unload_ML.Larg   R-squared:                       0.003
Model:                            OLS   Adj. R-squared:                 -0.032
Method:                 Least Squares   F-statistic:                   0.09699
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.758
Time:                        11:00:46   Log-Likelihood:                 44.597
No. Observations:                  30   AIC:                            -85.19
Df Residuals:                      28   BIC:                            -82.39
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.2925      0.054      5.434      0.000       0.182       0.403
Age            0.0019      0.006      0.311      0.758      -0.011       0.014
==============================================================================
Omnibus:                        4.589   Durbin-Watson:                   1.493
Prob(Omnibus):                  0.101   Jarque-Bera (JB):                3.449
Skew:                          -0.825   Prob(JB):                        0.178
Kurtosis:                       3.197   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour Vpic_load_AP.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        Vpic_load_AP.ms   R-squared:                       0.169
Model:                            OLS   Adj. R-squared:                  0.140
Method:                 Least Squares   F-statistic:                     5.710
Date:                Wed, 05 Mar 2025   Prob (F-statistic):             0.0238
Time:                        11:00:47   Log-Likelihood:                 30.393
No. Observations:                  30   AIC:                            -56.79
Df Residuals:                      28   BIC:                            -53.98
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0152      0.086      0.176      0.862      -0.162       0.192
Age            0.0235      0.010      2.390      0.024       0.003       0.044
==============================================================================
Omnibus:                        0.432   Durbin-Watson:                   1.833
Prob(Omnibus):                  0.806   Jarque-Bera (JB):                0.077
Skew:                           0.122   Prob(JB):                        0.962
Kurtosis:                       3.046   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
L'effet de l'âge sur Vpic_load_AP.ms est significatif (p-value: 0.0238)
No description has been provided for this image
Résultats de la régression pour Vpic_load_ML.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        Vpic_load_ML.ms   R-squared:                       0.103
Model:                            OLS   Adj. R-squared:                  0.071
Method:                 Least Squares   F-statistic:                     3.224
Date:                Wed, 05 Mar 2025   Prob (F-statistic):             0.0834
Time:                        11:00:47   Log-Likelihood:                 24.453
No. Observations:                  30   AIC:                            -44.91
Df Residuals:                      28   BIC:                            -42.10
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0982      0.105      0.932      0.359      -0.118       0.314
Age            0.0216      0.012      1.796      0.083      -0.003       0.046
==============================================================================
Omnibus:                        0.699   Durbin-Watson:                   1.664
Prob(Omnibus):                  0.705   Jarque-Bera (JB):                0.769
Skew:                           0.233   Prob(JB):                        0.681
Kurtosis:                       2.368   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour Vpic_unload_ML.ms:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:      Vpic_unload_ML.ms   R-squared:                       0.001
Model:                            OLS   Adj. R-squared:                 -0.034
Method:                 Least Squares   F-statistic:                   0.03913
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.845
Time:                        11:00:47   Log-Likelihood:                -7.7890
No. Observations:                  30   AIC:                             19.58
Df Residuals:                      28   BIC:                             22.38
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          1.3049      0.309      4.230      0.000       0.673       1.937
Age           -0.0070      0.035     -0.198      0.845      -0.079       0.065
==============================================================================
Omnibus:                        1.697   Durbin-Watson:                   2.683
Prob(Omnibus):                  0.428   Jarque-Bera (JB):                1.421
Skew:                           0.375   Prob(JB):                        0.491
Kurtosis:                       2.241   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour BOS_AP_Init.m:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:          BOS_AP_Init.m   R-squared:                       0.511
Model:                            OLS   Adj. R-squared:                  0.494
Method:                 Least Squares   F-statistic:                     29.31
Date:                Wed, 05 Mar 2025   Prob (F-statistic):           8.96e-06
Time:                        11:00:47   Log-Likelihood:                 94.627
No. Observations:                  30   AIC:                            -185.3
Df Residuals:                      28   BIC:                            -182.5
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.1172      0.010     11.542      0.000       0.096       0.138
Age            0.0063      0.001      5.414      0.000       0.004       0.009
==============================================================================
Omnibus:                        1.577   Durbin-Watson:                   2.337
Prob(Omnibus):                  0.454   Jarque-Bera (JB):                1.247
Skew:                          -0.296   Prob(JB):                        0.536
Kurtosis:                       2.195   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
L'effet de l'âge sur BOS_AP_Init.m est significatif (p-value: 0.0000)
No description has been provided for this image
Résultats de la régression pour BOS_ML_Init.m:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:          BOS_ML_Init.m   R-squared:                       0.003
Model:                            OLS   Adj. R-squared:                 -0.033
Method:                 Least Squares   F-statistic:                   0.08326
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.775
Time:                        11:00:48   Log-Likelihood:                 68.754
No. Observations:                  30   AIC:                            -133.5
Df Residuals:                      28   BIC:                            -130.7
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.2459      0.024     10.223      0.000       0.197       0.295
Age           -0.0008      0.003     -0.289      0.775      -0.006       0.005
==============================================================================
Omnibus:                        0.391   Durbin-Watson:                   2.335
Prob(Omnibus):                  0.823   Jarque-Bera (JB):                0.516
Skew:                           0.224   Prob(JB):                        0.772
Kurtosis:                       2.538   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour MOS_AP_FOcr.Long:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       MOS_AP_FOcr.Long   R-squared:                       0.000
Model:                            OLS   Adj. R-squared:                 -0.036
Method:                 Least Squares   F-statistic:                 0.0009576
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.976
Time:                        11:00:48   Log-Likelihood:                 2.5794
No. Observations:                  30   AIC:                            -1.159
Df Residuals:                      28   BIC:                             1.644
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.8322      0.218     -3.811      0.001      -1.279      -0.385
Age           -0.0008      0.025     -0.031      0.976      -0.052       0.050
==============================================================================
Omnibus:                        2.748   Durbin-Watson:                   2.440
Prob(Omnibus):                  0.253   Jarque-Bera (JB):                1.444
Skew:                           0.442   Prob(JB):                        0.486
Kurtosis:                       3.611   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
Résultats de la régression pour MOS_ML_FOcr.Larg:
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       MOS_ML_FOcr.Larg   R-squared:                       0.030
Model:                            OLS   Adj. R-squared:                 -0.005
Method:                 Least Squares   F-statistic:                    0.8637
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.361
Time:                        11:00:48   Log-Likelihood:                 34.234
No. Observations:                  30   AIC:                            -64.47
Df Residuals:                      28   BIC:                            -61.67
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.1303      0.076     -1.714      0.098      -0.286       0.025
Age            0.0081      0.009      0.929      0.361      -0.010       0.026
==============================================================================
Omnibus:                        2.161   Durbin-Watson:                   2.099
Prob(Omnibus):                  0.340   Jarque-Bera (JB):                0.988
Skew:                           0.332   Prob(JB):                        0.610
Kurtosis:                       3.592   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
In [ ]:
import statsmodels.api as sm

resultats = []  # Liste pour stocker les résultats

for colonne in colonnes_initiation_marche:
    X = sm.add_constant(df['Age'])
    y = df[colonne]

    model = sm.OLS(y, X).fit()
    p_value = model.pvalues['Age']
    r_squared = model.rsquared

    significativite = "Significatif" if p_value < 0.05 else "Non significatif"
    resultats.append({
        'Variable': colonne,
        'P-value': p_value,
        'R²': r_squared,
        'Significativité': significativite
    })

# Créer un DataFrame à partir des résultats
tableau_resultats = pd.DataFrame(resultats)
print(tableau_resultats)
              Variable   P-value        R²   Significativité
0              TAju.ms  0.953812  0.000122  Non significatif
1              TExe.ms  0.877644  0.000861  Non significatif
2              TPas.ms  0.879445  0.000836  Non significatif
3             TLoad.ms  0.553808  0.012664  Non significatif
4           TUnload.ms  0.495385  0.016757  Non significatif
5      CoP_tot_AP.Long  0.256820  0.045670  Non significatif
6      CoP_tot_ML.Larg  0.264945  0.044174  Non significatif
7      CoP_loadAP.Long  0.477618  0.018168  Non significatif
8     CoP_load_ML.Larg  0.059785  0.120853  Non significatif
9   CoP_unload_ML.Larg  0.757779  0.003452  Non significatif
10     Vpic_load_AP.ms  0.023842  0.169388      Significatif
11     Vpic_load_ML.ms  0.083359  0.103259  Non significatif
12   Vpic_unload_ML.ms  0.844614  0.001396  Non significatif
13       BOS_AP_Init.m  0.000009  0.511428      Significatif
14       BOS_ML_Init.m  0.775050  0.002965  Non significatif
15    MOS_AP_FOcr.Long  0.975533  0.000034  Non significatif
16    MOS_ML_FOcr.Larg  0.360656  0.029922  Non significatif

Les variables pour lesquels l'âge a un effet significative est : Vpic_load_AP.ms & BOS_AP_Init.m

Q3.4

1. Analyse univariée : Effet de l'âge sur la taille et le poids

Régression linéaire simple

In [ ]:
for var in ["Height", "Weight"]:
    X = sm.add_constant(df["Age"])  # Ajout de l'âge comme variable explicative
    y = df[var]  # Variable dépendante

    model = sm.OLS(y, X).fit()

    print(f"\n🔹 Régression de {var} sur l'âge")
    print(model.summary())

    # 📉 Tracé du nuage de points avec la droite de régression
    plt.figure(figsize=(8,5))
    sns.regplot(x=df['Age'], y=df[var], scatter_kws={'alpha':0.5}, line_kws={"color": "red"})
    plt.title(f"Régression linéaire : {var} ~ Age")
    plt.xlabel("Age")
    plt.ylabel(var)
    plt.show()
🔹 Régression de Height sur l'âge
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 Height   R-squared:                       0.632
Model:                            OLS   Adj. R-squared:                  0.619
Method:                 Least Squares   F-statistic:                     48.03
Date:                Wed, 05 Mar 2025   Prob (F-statistic):           1.56e-07
Time:                        11:00:49   Log-Likelihood:                -97.842
No. Observations:                  30   AIC:                             199.7
Df Residuals:                      28   BIC:                             202.5
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         92.5157      6.208     14.904      0.000      79.800     105.231
Age            4.9037      0.708      6.930      0.000       3.454       6.353
==============================================================================
Omnibus:                        0.389   Durbin-Watson:                   1.701
Prob(Omnibus):                  0.823   Jarque-Bera (JB):                0.529
Skew:                          -0.212   Prob(JB):                        0.767
Kurtosis:                       2.507   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image
🔹 Régression de Weight sur l'âge
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 Weight   R-squared:                       0.421
Model:                            OLS   Adj. R-squared:                  0.400
Method:                 Least Squares   F-statistic:                     20.33
Date:                Wed, 05 Mar 2025   Prob (F-statistic):           0.000106
Time:                        11:00:49   Log-Likelihood:                -94.304
No. Observations:                  30   AIC:                             192.6
Df Residuals:                      28   BIC:                             195.4
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          5.2120      5.517      0.945      0.353      -6.089      16.513
Age            2.8356      0.629      4.509      0.000       1.547       4.124
==============================================================================
Omnibus:                        2.070   Durbin-Watson:                   2.143
Prob(Omnibus):                  0.355   Jarque-Bera (JB):                1.204
Skew:                           0.482   Prob(JB):                        0.548
Kurtosis:                       3.186   Cond. No.                         46.2
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
No description has been provided for this image

Interprétation des résultats

Si le coefficient de l'âge est significatif (p-value < 0.05), cela indique que l'âge a un effet significatif sur la taille ou le poids.

Cependant, cette analyse ne tient pas compte des effets potentiels de la taille sur le poids, ou vice versa.

2. Analyse multivariée : Contrôle des effets de la taille et du poids

Pour vérifier que les effets de l'âge ne sont pas confondus par la taille ou le poids, nous pouvons utiliser une régression linéaire multiple. Cela permet de contrôler l'effet de plusieurs variables en même temps.

**Vérifions si l'effet combiné de l'âge, la taille et le poids sur l'anticipation disparaît après contrôle**

In [ ]:
for colonne in colonnes_initiation_marche:
    X = df[['Age', 'Height', 'Weight']]  # Variables explicatives
    X = sm.add_constant(X)  # Ajout de la constante
    y = df[colonne]  # Variable dépendante

    model = sm.OLS(y, X).fit()

    print(f"\n🔹 Régression de {colonne} sur l'âge, la taille et le poids")
    print(model.summary())
🔹 Régression de TAju.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TAju.ms   R-squared:                       0.092
Model:                            OLS   Adj. R-squared:                 -0.013
Method:                 Least Squares   F-statistic:                    0.8801
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.464
Time:                        11:00:49   Log-Likelihood:                -177.97
No. Observations:                  30   AIC:                             363.9
Df Residuals:                      26   BIC:                             369.6
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const       -138.2103    402.812     -0.343      0.734    -966.202     689.781
Age          -18.2758     17.686     -1.033      0.311     -54.631      18.079
Height         7.1966      4.450      1.617      0.118      -1.950      16.343
Weight        -5.7788      5.007     -1.154      0.259     -16.070       4.512
==============================================================================
Omnibus:                        6.509   Durbin-Watson:                   2.860
Prob(Omnibus):                  0.039   Jarque-Bera (JB):                7.017
Skew:                          -0.385   Prob(JB):                       0.0299
Kurtosis:                       5.241   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de TExe.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TExe.ms   R-squared:                       0.158
Model:                            OLS   Adj. R-squared:                  0.060
Method:                 Least Squares   F-statistic:                     1.621
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.209
Time:                        11:00:49   Log-Likelihood:                -180.32
No. Observations:                  30   AIC:                             368.6
Df Residuals:                      26   BIC:                             374.3
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const       1184.8704    435.631      2.720      0.011     289.419    2080.322
Age           23.9426     19.127      1.252      0.222     -15.374      63.260
Height       -10.4454      4.812     -2.171      0.039     -20.337      -0.554
Weight        10.2799      5.414      1.899      0.069      -0.850      21.409
==============================================================================
Omnibus:                        2.238   Durbin-Watson:                   1.704
Prob(Omnibus):                  0.327   Jarque-Bera (JB):                1.991
Skew:                           0.591   Prob(JB):                        0.370
Kurtosis:                       2.559   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de TPas.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                TPas.ms   R-squared:                       0.013
Model:                            OLS   Adj. R-squared:                 -0.101
Method:                 Least Squares   F-statistic:                    0.1149
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.951
Time:                        11:00:49   Log-Likelihood:                -191.82
No. Observations:                  30   AIC:                             391.6
Df Residuals:                      26   BIC:                             397.2
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const       1046.6601    639.025      1.638      0.113    -266.874    2360.194
Age            5.6668     28.058      0.202      0.842     -52.007      63.341
Height        -3.2488      7.059     -0.460      0.649     -17.759      11.261
Weight         4.5011      7.942      0.567      0.576     -11.825      20.827
==============================================================================
Omnibus:                        0.870   Durbin-Watson:                   2.012
Prob(Omnibus):                  0.647   Jarque-Bera (JB):                0.860
Skew:                           0.224   Prob(JB):                        0.651
Kurtosis:                       2.303   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de TLoad.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:               TLoad.ms   R-squared:                       0.069
Model:                            OLS   Adj. R-squared:                 -0.039
Method:                 Least Squares   F-statistic:                    0.6394
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.597
Time:                        11:00:49   Log-Likelihood:                -172.66
No. Observations:                  30   AIC:                             353.3
Df Residuals:                      26   BIC:                             358.9
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         22.3399    337.383      0.066      0.948    -671.161     715.841
Age           -8.4238     14.814     -0.569      0.574     -38.874      22.026
Height         3.6718      3.727      0.985      0.334      -3.989      11.332
Weight        -5.2433      4.193     -1.250      0.222     -13.863       3.376
==============================================================================
Omnibus:                        0.169   Durbin-Watson:                   2.492
Prob(Omnibus):                  0.919   Jarque-Bera (JB):                0.367
Skew:                           0.111   Prob(JB):                        0.833
Kurtosis:                       2.507   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de TUnload.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:             TUnload.ms   R-squared:                       0.084
Model:                            OLS   Adj. R-squared:                 -0.021
Method:                 Least Squares   F-statistic:                    0.7985
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.506
Time:                        11:00:49   Log-Likelihood:                -171.57
No. Observations:                  30   AIC:                             351.1
Df Residuals:                      26   BIC:                             356.7
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const       -160.5503    325.334     -0.493      0.626    -829.283     508.183
Age           -9.8520     14.285     -0.690      0.496     -39.214      19.510
Height         3.5247      3.594      0.981      0.336      -3.862      10.912
Weight        -0.5355      4.044     -0.132      0.896      -8.847       7.776
==============================================================================
Omnibus:                        1.936   Durbin-Watson:                   2.556
Prob(Omnibus):                  0.380   Jarque-Bera (JB):                1.449
Skew:                           0.535   Prob(JB):                        0.484
Kurtosis:                       2.872   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de CoP_tot_AP.Long sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_tot_AP.Long   R-squared:                       0.107
Model:                            OLS   Adj. R-squared:                  0.004
Method:                 Least Squares   F-statistic:                     1.041
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.391
Time:                        11:00:49   Log-Likelihood:                 88.122
No. Observations:                  30   AIC:                            -168.2
Df Residuals:                      26   BIC:                            -162.6
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.0270      0.057     -0.477      0.637      -0.143       0.089
Age           -0.0009      0.002     -0.372      0.713      -0.006       0.004
Height         0.0006      0.001      0.927      0.363      -0.001       0.002
Weight      -6.95e-05      0.001     -0.099      0.922      -0.002       0.001
==============================================================================
Omnibus:                        0.407   Durbin-Watson:                   1.855
Prob(Omnibus):                  0.816   Jarque-Bera (JB):                0.395
Skew:                           0.243   Prob(JB):                        0.821
Kurtosis:                       2.718   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de CoP_tot_ML.Larg sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_tot_ML.Larg   R-squared:                       0.464
Model:                            OLS   Adj. R-squared:                  0.403
Method:                 Least Squares   F-statistic:                     7.517
Date:                Wed, 05 Mar 2025   Prob (F-statistic):           0.000883
Time:                        11:00:49   Log-Likelihood:                 82.092
No. Observations:                  30   AIC:                            -156.2
Df Residuals:                      26   BIC:                            -150.6
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.1079      0.069     -1.558      0.131      -0.250       0.034
Age           -0.0081      0.003     -2.655      0.013      -0.014      -0.002
Height         0.0021      0.001      2.797      0.010       0.001       0.004
Weight      9.002e-05      0.001      0.105      0.917      -0.002       0.002
==============================================================================
Omnibus:                        0.526   Durbin-Watson:                   2.121
Prob(Omnibus):                  0.769   Jarque-Bera (JB):                0.628
Skew:                          -0.127   Prob(JB):                        0.731
Kurtosis:                       2.339   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de CoP_loadAP.Long sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        CoP_loadAP.Long   R-squared:                       0.064
Model:                            OLS   Adj. R-squared:                 -0.044
Method:                 Least Squares   F-statistic:                    0.5907
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.627
Time:                        11:00:49   Log-Likelihood:                 34.718
No. Observations:                  30   AIC:                            -61.44
Df Residuals:                      26   BIC:                            -55.83
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.0979      0.336     -0.292      0.773      -0.788       0.592
Age           -0.0067      0.015     -0.454      0.653      -0.037       0.024
Height         0.0026      0.004      0.697      0.492      -0.005       0.010
Weight         0.0001      0.004      0.027      0.979      -0.008       0.009
==============================================================================
Omnibus:                        3.094   Durbin-Watson:                   1.818
Prob(Omnibus):                  0.213   Jarque-Bera (JB):                2.338
Skew:                          -0.534   Prob(JB):                        0.311
Kurtosis:                       2.146   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de CoP_load_ML.Larg sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       CoP_load_ML.Larg   R-squared:                       0.269
Model:                            OLS   Adj. R-squared:                  0.185
Method:                 Least Squares   F-statistic:                     3.195
Date:                Wed, 05 Mar 2025   Prob (F-statistic):             0.0400
Time:                        11:00:49   Log-Likelihood:                 49.232
No. Observations:                  30   AIC:                            -90.46
Df Residuals:                      26   BIC:                            -84.86
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.1773      0.207     -0.857      0.399      -0.603       0.248
Age           -0.0043      0.009     -0.477      0.637      -0.023       0.014
Height         0.0026      0.002      1.138      0.265      -0.002       0.007
Weight         0.0010      0.003      0.395      0.696      -0.004       0.006
==============================================================================
Omnibus:                        0.913   Durbin-Watson:                   1.952
Prob(Omnibus):                  0.633   Jarque-Bera (JB):                0.854
Skew:                           0.189   Prob(JB):                        0.652
Kurtosis:                       2.264   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de CoP_unload_ML.Larg sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:     CoP_unload_ML.Larg   R-squared:                       0.181
Model:                            OLS   Adj. R-squared:                  0.087
Method:                 Least Squares   F-statistic:                     1.922
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.151
Time:                        11:00:49   Log-Likelihood:                 47.549
No. Observations:                  30   AIC:                            -87.10
Df Residuals:                      26   BIC:                            -81.49
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.2005      0.219     -0.916      0.368      -0.651       0.250
Age           -0.0148      0.010     -1.539      0.136      -0.035       0.005
Height         0.0055      0.002      2.289      0.030       0.001       0.011
Weight        -0.0037      0.003     -1.353      0.188      -0.009       0.002
==============================================================================
Omnibus:                        1.593   Durbin-Watson:                   1.444
Prob(Omnibus):                  0.451   Jarque-Bera (JB):                1.346
Skew:                          -0.496   Prob(JB):                        0.510
Kurtosis:                       2.699   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de Vpic_load_AP.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        Vpic_load_AP.ms   R-squared:                       0.230
Model:                            OLS   Adj. R-squared:                  0.141
Method:                 Least Squares   F-statistic:                     2.582
Date:                Wed, 05 Mar 2025   Prob (F-statistic):             0.0750
Time:                        11:00:49   Log-Likelihood:                 31.521
No. Observations:                  30   AIC:                            -55.04
Df Residuals:                      26   BIC:                            -49.44
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.1647      0.374     -0.441      0.663      -0.932       0.603
Age            0.0077      0.016      0.472      0.641      -0.026       0.041
Height         0.0018      0.004      0.438      0.665      -0.007       0.010
Weight         0.0024      0.005      0.527      0.603      -0.007       0.012
==============================================================================
Omnibus:                        0.224   Durbin-Watson:                   1.819
Prob(Omnibus):                  0.894   Jarque-Bera (JB):                0.426
Skew:                           0.037   Prob(JB):                        0.808
Kurtosis:                       2.421   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de Vpic_load_ML.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:        Vpic_load_ML.ms   R-squared:                       0.412
Model:                            OLS   Adj. R-squared:                  0.344
Method:                 Least Squares   F-statistic:                     6.080
Date:                Wed, 05 Mar 2025   Prob (F-statistic):            0.00281
Time:                        11:00:49   Log-Likelihood:                 30.791
No. Observations:                  30   AIC:                            -53.58
Df Residuals:                      26   BIC:                            -47.98
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.8119      0.383     -2.121      0.044      -1.599      -0.025
Age           -0.0272      0.017     -1.617      0.118      -0.062       0.007
Height         0.0098      0.004      2.324      0.028       0.001       0.019
Weight         0.0002      0.005      0.041      0.968      -0.010       0.010
==============================================================================
Omnibus:                        0.368   Durbin-Watson:                   1.835
Prob(Omnibus):                  0.832   Jarque-Bera (JB):                0.504
Skew:                          -0.213   Prob(JB):                        0.777
Kurtosis:                       2.530   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de Vpic_unload_ML.ms sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:      Vpic_unload_ML.ms   R-squared:                       0.034
Model:                            OLS   Adj. R-squared:                 -0.077
Method:                 Least Squares   F-statistic:                    0.3068
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.820
Time:                        11:00:49   Log-Likelihood:                -7.2881
No. Observations:                  30   AIC:                             22.58
Df Residuals:                      26   BIC:                             28.18
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.3129      1.362      0.230      0.820      -2.487       3.112
Age           -0.0190      0.060     -0.317      0.754      -0.142       0.104
Height         0.0116      0.015      0.772      0.447      -0.019       0.043
Weight        -0.0158      0.017     -0.936      0.358      -0.051       0.019
==============================================================================
Omnibus:                        0.800   Durbin-Watson:                   2.651
Prob(Omnibus):                  0.670   Jarque-Bera (JB):                0.844
Skew:                           0.262   Prob(JB):                        0.656
Kurtosis:                       2.367   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de BOS_AP_Init.m sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:          BOS_AP_Init.m   R-squared:                       0.807
Model:                            OLS   Adj. R-squared:                  0.785
Method:                 Least Squares   F-statistic:                     36.32
Date:                Wed, 05 Mar 2025   Prob (F-statistic):           1.91e-09
Time:                        11:00:49   Log-Likelihood:                 108.59
No. Observations:                  30   AIC:                            -209.2
Df Residuals:                      26   BIC:                            -203.6
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0423      0.029      1.479      0.151      -0.017       0.101
Age            0.0006      0.001      0.503      0.620      -0.002       0.003
Height         0.0008      0.000      2.444      0.022       0.000       0.001
Weight         0.0007      0.000      1.830      0.079   -8.03e-05       0.001
==============================================================================
Omnibus:                        4.496   Durbin-Watson:                   1.731
Prob(Omnibus):                  0.106   Jarque-Bera (JB):                3.078
Skew:                          -0.753   Prob(JB):                        0.215
Kurtosis:                       3.441   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de BOS_ML_Init.m sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:          BOS_ML_Init.m   R-squared:                       0.201
Model:                            OLS   Adj. R-squared:                  0.109
Method:                 Least Squares   F-statistic:                     2.178
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.115
Time:                        11:00:49   Log-Likelihood:                 72.073
No. Observations:                  30   AIC:                            -136.1
Df Residuals:                      26   BIC:                            -130.5
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.2037      0.097      2.107      0.045       0.005       0.402
Age           -0.0071      0.004     -1.683      0.104      -0.016       0.002
Height         0.0004      0.001      0.342      0.735      -0.002       0.003
Weight         0.0016      0.001      1.338      0.192      -0.001       0.004
==============================================================================
Omnibus:                        0.496   Durbin-Watson:                   2.469
Prob(Omnibus):                  0.780   Jarque-Bera (JB):                0.539
Skew:                           0.271   Prob(JB):                        0.764
Kurtosis:                       2.628   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de MOS_AP_FOcr.Long sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       MOS_AP_FOcr.Long   R-squared:                       0.020
Model:                            OLS   Adj. R-squared:                 -0.093
Method:                 Least Squares   F-statistic:                    0.1762
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.912
Time:                        11:00:49   Log-Likelihood:                 2.8808
No. Observations:                  30   AIC:                             2.238
Df Residuals:                      26   BIC:                             7.843
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.1985      0.970     -0.205      0.839      -2.193       1.796
Age            0.0117      0.043      0.274      0.786      -0.076       0.099
Height        -0.0073      0.011     -0.682      0.501      -0.029       0.015
Weight         0.0083      0.012      0.685      0.500      -0.017       0.033
==============================================================================
Omnibus:                        2.977   Durbin-Watson:                   2.479
Prob(Omnibus):                  0.226   Jarque-Bera (JB):                1.605
Skew:                           0.447   Prob(JB):                        0.448
Kurtosis:                       3.696   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

🔹 Régression de MOS_ML_FOcr.Larg sur l'âge, la taille et le poids
                            OLS Regression Results                            
==============================================================================
Dep. Variable:       MOS_ML_FOcr.Larg   R-squared:                       0.184
Model:                            OLS   Adj. R-squared:                  0.090
Method:                 Least Squares   F-statistic:                     1.954
Date:                Wed, 05 Mar 2025   Prob (F-statistic):              0.146
Time:                        11:00:49   Log-Likelihood:                 36.829
No. Observations:                  30   AIC:                            -65.66
Df Residuals:                      26   BIC:                            -60.05
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.5350      0.313      1.709      0.099      -0.108       1.178
Age            0.0247      0.014      1.797      0.084      -0.004       0.053
Height        -0.0076      0.003     -2.199      0.037      -0.015      -0.000
Weight         0.0073      0.004      1.870      0.073      -0.001       0.015
==============================================================================
Omnibus:                        0.535   Durbin-Watson:                   2.095
Prob(Omnibus):                  0.765   Jarque-Bera (JB):                0.053
Skew:                           0.071   Prob(JB):                        0.974
Kurtosis:                       3.149   Cond. No.                     3.12e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 3.12e+03. This might indicate that there are
strong multicollinearity or other numerical problems.

Récapitulatif des régressions effectuées

In [ ]:
import pandas as pd
import statsmodels.api as sm

# Stocker les résultats dans une liste
results_list = []

for colonne in colonnes_initiation_marche:
    X = df[['Age', 'Height', 'Weight']]  # Variables explicatives
    X = sm.add_constant(X)  # Ajout de la constante
    y = df[colonne]  # Variable dépendante

    model = sm.OLS(y, X).fit()

    # Récupération des p-values
    p_values = model.pvalues

    # Ajout des résultats dans la liste
    for var in ['const', 'Age', 'Height', 'Weight']:
        results_list.append({
            'Variable dépendante': colonne,
            'Variable explicative': var,
            'p-value': p_values[var],
            'Significatif': '✅ Oui' if p_values[var] < 0.05 else '❌ Non'
        })

# Création du DataFrame récapitulatif
df_results = pd.DataFrame(results_list)

# Affichage du tableau
print("\n📊 Tableau des p-values et significativité :")
print(df_results)

# Option pour enregistrer le tableau en CSV
df_results.to_csv("resultats_regression.csv", index=False)
📊 Tableau des p-values et significativité :
   Variable dépendante Variable explicative   p-value Significatif
0              TAju.ms                const  0.734272        ❌ Non
1              TAju.ms                  Age  0.310971        ❌ Non
2              TAju.ms               Height  0.117873        ❌ Non
3              TAju.ms               Weight  0.258894        ❌ Non
4              TExe.ms                const  0.011484        ✅ Oui
..                 ...                  ...       ...          ...
63    MOS_AP_FOcr.Long               Weight  0.499656        ❌ Non
64    MOS_ML_FOcr.Larg                const  0.099297        ❌ Non
65    MOS_ML_FOcr.Larg                  Age  0.083888        ❌ Non
66    MOS_ML_FOcr.Larg               Height  0.037009        ✅ Oui
67    MOS_ML_FOcr.Larg               Weight  0.072811        ❌ Non

[68 rows x 4 columns]

Affichage des variables significatives uniquement

In [ ]:
# Stocker les résultats dans une liste
results_list = []

for colonne in colonnes_initiation_marche:
    X = df[['Age', 'Height', 'Weight']]  # Variables explicatives
    X = sm.add_constant(X)  # Ajout de la constante
    y = df[colonne]  # Variable dépendante

    model = sm.OLS(y, X).fit()

    # Récupération des p-values
    p_values = model.pvalues

    # Ajouter uniquement les résultats significatifs (p < 0.05)
    for var in ['const', 'Age', 'Height', 'Weight']:
        if p_values[var] < 0.05:  # Condition pour filtrer uniquement les variables significatives
            results_list.append({
                'Variable dépendante': colonne,
                'Variable explicative': var,
                'p-value': round(p_values[var], 5),  # Arrondi pour lisibilité
                'Significatif': '✅ Oui'
            })

# Création du DataFrame récapitulatif
df_results = pd.DataFrame(results_list)

# Affichage du tableau uniquement si des valeurs significatives existent
if not df_results.empty:
    print("\n📊 Tableau des variables explicatives significatives :")
    print(df_results)
else:
    print("\n❌ Aucune relation significative trouvée.")
📊 Tableau des variables explicatives significatives :
  Variable dépendante Variable explicative  p-value Significatif
0             TExe.ms                const  0.01148        ✅ Oui
1             TExe.ms               Height  0.03928        ✅ Oui
2     CoP_tot_ML.Larg                  Age  0.01335        ✅ Oui
3     CoP_tot_ML.Larg               Height  0.00958        ✅ Oui
4  CoP_unload_ML.Larg               Height  0.03045        ✅ Oui
5     Vpic_load_ML.ms                const  0.04359        ✅ Oui
6     Vpic_load_ML.ms               Height  0.02820        ✅ Oui
7       BOS_AP_Init.m               Height  0.02162        ✅ Oui
8       BOS_ML_Init.m                const  0.04488        ✅ Oui
9    MOS_ML_FOcr.Larg               Height  0.03701        ✅ Oui

Interprétation des résultats

Certaines variables dépendantes sont influencées par la taille ( Height) Par exemple, TExe.ms est significativement influencé par Height(p = 0,03928). De même, CoP_tot_ML.Larg, CoP_unload_ML.Larg, Vpic_load_ML.ms, BOS_AP_Init.m, etc. ont tous un effet significatif de la taille .

Cela signifie que la taille a une relation significative avec ces mesures.

L'âge ( Age) influence seulement CoP_tot_ML.Larg

p-value = 0.01335→ effet significatif de l'âge sur CoP_tot_ML.Larg.

Cela montre que l'âge peut être un facteur influençant cette variable, mais pas les autres mesures.

Conséquences

  • L'âge semble avoir un effet limité : il n'est significatif que pour CoP_tot_ML.Larg. Cela signifie que l'évolution des autres variables dépendantes n'est pas due à l'âge , mais plutôt à d'autres facteurs comme la taille.

  • La taille ( Height) a un effet plus important : plusieurs variables sont significativement influencées par la taille, ce qui suggère qu'elle joue un rôle clé dans ces mesures.

  • Le poids ( Weight) n'est pas significatif : Il ne figure pas dans le tableau, ce qui signifie que son effet sur les variables dépendantes n'est pas statistiquement prouvé.